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
|
||||
* Formatter la page de remerciement (expliquer la suite)
|
||||
* 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
|
||||
* Page service : navette + location
|
||||
* écrire les mentions légales
|
||||
|
|
@ -71,4 +71,4 @@ Le visiteur doit pouvoir :
|
|||
* changer la couleur des liens hypertextes
|
||||
* changer l'adresse de l'admin
|
||||
* 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 phonenumber_field.modelfields import PhoneNumberField
|
||||
|
||||
from villafleurie import settings
|
||||
|
||||
class Place(models.Model):
|
||||
class Meta:
|
||||
|
|
@ -10,7 +10,7 @@ class Place(models.Model):
|
|||
return self.name
|
||||
|
||||
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)
|
||||
info=models.TextField(blank=True)
|
||||
subname=models.CharField(max_length=100, blank=True)
|
||||
|
|
@ -50,8 +50,11 @@ class Testimonial(models.Model):
|
|||
verbose_name="Témoignage"
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
return self.author
|
||||
|
||||
title=models.CharField(max_length=100)
|
||||
reservation=models.OneToOneField(Reservation,on_delete=models.CASCADE)
|
||||
author=models.CharField(max_length=100)
|
||||
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>
|
||||
|
||||
<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 %}
|
||||
|
|
|
|||
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 . import views
|
||||
from villafleurie import settings
|
||||
from .models import Testimonial, Reservation, Guest, Place
|
||||
from django.contrib.staticfiles.urls import static, staticfiles_urlpatterns
|
||||
|
||||
app_name = 'rental'
|
||||
|
||||
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('<place_name>/', views.Location.as_view(), 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
|
||||
|
||||
|
||||
class Accueil(ListView):
|
||||
model = Place
|
||||
template_name = 'rental/index.html'
|
||||
context_object_name = 'places'
|
||||
# class Accueil(ListView):
|
||||
# model = Place
|
||||
# template_name = 'rental/index.html'
|
||||
# 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):
|
||||
|
|
|
|||
|
|
@ -88,3 +88,6 @@ USE_TZ = True
|
|||
|
||||
STATIC_URL = '/static/'
|
||||
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