mirror of
https://github.com/rjNemo/villafleurie
synced 2026-06-12 13:26:47 +00:00
media img
This commit is contained in:
parent
891101efdc
commit
7dead9d040
10 changed files with 162 additions and 12 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
|
|
@ -62,7 +62,7 @@ Le visiteur doit pouvoir :
|
||||||
## TO DO
|
## TO DO
|
||||||
* Formatter la page de remerciement (expliquer la suite)
|
* Formatter la page de remerciement (expliquer la suite)
|
||||||
* designer la page d'accueil
|
* designer la page d'accueil
|
||||||
* remplir les détails des logements et ajouter les photos dynamiquement
|
* remplir les détails des logements et ajouter les photos
|
||||||
* Les photos de la page à propos
|
* Les photos de la page à propos
|
||||||
* Page service : navette + location
|
* Page service : navette + location
|
||||||
* écrire les mentions légales
|
* écrire les mentions légales
|
||||||
|
|
@ -71,4 +71,4 @@ Le visiteur doit pouvoir :
|
||||||
* changer la couleur des liens hypertextes
|
* changer la couleur des liens hypertextes
|
||||||
* changer l'adresse de l'admin
|
* changer l'adresse de l'admin
|
||||||
* ajouter un diaporama en bas de page ?
|
* ajouter un diaporama en bas de page ?
|
||||||
* ajouter les témoignages
|
* ajouter les témoignages depuis Booking, AirBnb, ajouter le lien
|
||||||
|
|
|
||||||
BIN
media/img/social_media.png
Normal file
BIN
media/img/social_media.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 119 KiB |
BIN
media/img/social_media_edR0grX.png
Normal file
BIN
media/img/social_media_edR0grX.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 119 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from phonenumber_field.modelfields import PhoneNumberField
|
from phonenumber_field.modelfields import PhoneNumberField
|
||||||
|
from villafleurie import settings
|
||||||
|
|
||||||
class Place(models.Model):
|
class Place(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -10,7 +10,7 @@ class Place(models.Model):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
name=models.CharField(max_length=10, unique=True)
|
name=models.CharField(max_length=10, unique=True)
|
||||||
pictures=models.ImageField(upload_to="uploads/",null=True,blank=True)
|
pictures=models.ImageField(upload_to="img/",null=True,blank=True)
|
||||||
description=models.TextField(blank=True)
|
description=models.TextField(blank=True)
|
||||||
info=models.TextField(blank=True)
|
info=models.TextField(blank=True)
|
||||||
subname=models.CharField(max_length=100, blank=True)
|
subname=models.CharField(max_length=100, blank=True)
|
||||||
|
|
@ -50,8 +50,11 @@ class Testimonial(models.Model):
|
||||||
verbose_name="Témoignage"
|
verbose_name="Témoignage"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.author
|
||||||
|
|
||||||
title=models.CharField(max_length=100)
|
author=models.CharField(max_length=100)
|
||||||
reservation=models.OneToOneField(Reservation,on_delete=models.CASCADE)
|
|
||||||
text=models.TextField()
|
text=models.TextField()
|
||||||
|
picture=models.ImageField(upload_to='img/',null=True,blank=True)
|
||||||
|
link=models.URLField(null=True,blank=True)
|
||||||
|
guest=models.OneToOneField(Guest,on_delete=models.CASCADE,blank=True,null=True)
|
||||||
|
reservation=models.OneToOneField(Reservation,on_delete=models.CASCADE,blank=True,null=True)
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,90 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<section class="section-services section-t8">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="title-wrap d-flex justify-content-between">
|
||||||
|
<div class="title-box">
|
||||||
|
<h2 class="title-a">Tout pour vous sentir comme chez vous</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card-box-c foo">
|
||||||
|
<div class="card-header-c d-flex">
|
||||||
|
<div class="card-box-ico">
|
||||||
|
<span class="fa fa-home"></span>
|
||||||
|
</div>
|
||||||
|
<div class="card-title-c align-self-center">
|
||||||
|
<h2 class="title-c">Gîte</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body-c">
|
||||||
|
<p class="content-c">
|
||||||
|
Des superbes gîtes de vacances, tout équipés. Passer des vacances inoubliables,
|
||||||
|
sentez vous comme chez vous
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-c">
|
||||||
|
<a href="#" class="link-c link-icon">En savoir plus
|
||||||
|
<span class="ion-ios-arrow-forward"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card-box-c foo">
|
||||||
|
<div class="card-header-c d-flex">
|
||||||
|
<div class="card-box-ico">
|
||||||
|
<span class="fa fa-map"</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-title-c align-self-center">
|
||||||
|
<h2 class="title-c">Transport</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body-c">
|
||||||
|
<p class="content-c">
|
||||||
|
Votre séjour débute de la meilleure des façons.
|
||||||
|
Nous organisons une navette entre l'aéroport, la gare maritime, le port de croisière et VillaFleurie
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-c">
|
||||||
|
<a href="#" class="link-c link-icon">En savoir plus
|
||||||
|
<span class="ion-ios-arrow-forward"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card-box-c foo">
|
||||||
|
<div class="card-header-c d-flex">
|
||||||
|
<div class="card-box-ico">
|
||||||
|
<span class="fa fa-car"></span>
|
||||||
|
</div>
|
||||||
|
<div class="card-title-c align-self-center">
|
||||||
|
<h2 class="title-c">Voiture</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body-c">
|
||||||
|
<p class="content-c">
|
||||||
|
La plage est à 10 minutes à pied … pour le reste nous proposons un véhicule de location au tarif maison
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer-c">
|
||||||
|
<a href="#" class="link-c link-icon">En savoir plus
|
||||||
|
<span class="ion-ios-arrow-forward"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% include 'rental/temoignage.html' %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
43
rental/templates/rental/temoignage.html
Normal file
43
rental/templates/rental/temoignage.html
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
<section class="section-testimonials section-t8 nav-arrow-a">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="title-wrap d-flex justify-content-between">
|
||||||
|
<div class="title-box">
|
||||||
|
<h2 class="title-a">Témoignages</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="testimonial-carousel" class="owl-carousel owl-arrow">
|
||||||
|
{% for temoignage in temoignages %}
|
||||||
|
<div class="carousel-item-a">
|
||||||
|
<div class="testimonials-box">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-sm-12 col-md-6">
|
||||||
|
<div class="testimonial-img">
|
||||||
|
<img src="{{ temoignage.picture.url }}" alt="" class="img-fluid">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 col-md-6">
|
||||||
|
<div class="testimonial-ico">
|
||||||
|
<span class="ion-ios-quote"></span>
|
||||||
|
</div>
|
||||||
|
<div class="testimonials-content">
|
||||||
|
<p class="testimonial-text">
|
||||||
|
{{ temoignage.text }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="testimonial-author-box">
|
||||||
|
<img src="{{ temoignage.picture.url }}" alt="" class="testimonial-avatar">
|
||||||
|
<a href="{{ temoignage.link }}"><h5 class="testimonial-author">{{ temoignage.author }}</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
@ -1,12 +1,18 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from . import views
|
from . import views
|
||||||
|
from villafleurie import settings
|
||||||
from .models import Testimonial, Reservation, Guest, Place
|
from .models import Testimonial, Reservation, Guest, Place
|
||||||
|
from django.contrib.staticfiles.urls import static, staticfiles_urlpatterns
|
||||||
|
|
||||||
app_name = 'rental'
|
app_name = 'rental'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.Accueil.as_view(), name='index'),
|
# path('', views.Accueil.as_view(), name='index'),
|
||||||
|
path('', views.index, name='index'),
|
||||||
path('hebergements/', views.ListeLocation.as_view(), name='list_place'),
|
path('hebergements/', views.ListeLocation.as_view(), name='list_place'),
|
||||||
# path('<place_name>/', views.Location.as_view(), name='detail_place'),
|
# path('<place_name>/', views.Location.as_view(), name='detail_place'),
|
||||||
path('<place_name>/', views.location, name='detail_place'),
|
path('<place_name>/', views.location, name='detail_place'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
urlpatterns += staticfiles_urlpatterns()
|
||||||
|
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,19 @@ from.forms import ReservationForm
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
|
|
||||||
|
|
||||||
class Accueil(ListView):
|
# class Accueil(ListView):
|
||||||
model = Place
|
# model = Place
|
||||||
template_name = 'rental/index.html'
|
# template_name = 'rental/index.html'
|
||||||
context_object_name = 'places'
|
# context_object_name = 'places'
|
||||||
|
|
||||||
|
def index(request):
|
||||||
|
places = Place.objects.all()
|
||||||
|
temoignages = Testimonial.objects.all()
|
||||||
|
context = {
|
||||||
|
'places' : places,
|
||||||
|
'temoignages' : temoignages
|
||||||
|
}
|
||||||
|
return render(request, 'rental/index.html', context)
|
||||||
|
|
||||||
|
|
||||||
class ListeLocation(ListView):
|
class ListeLocation(ListView):
|
||||||
|
|
|
||||||
|
|
@ -88,3 +88,6 @@ USE_TZ = True
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
STATICFILES_DIRS = [os.path.join(BASE_DIR, "rental", "static", "rental"),]
|
STATICFILES_DIRS = [os.path.join(BASE_DIR, "rental", "static", "rental"),]
|
||||||
|
|
||||||
|
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
|
||||||
|
MEDIA_URL = '/media/'
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue