Vues génériques basées sur les datesLien vers cette rubrique
Les vues génériques basées sur les dates, définies dans django.views.generic.dates, sont des vues destinées à afficher des pages énumérant en détails des données en fonction de leur date.
ArchiveIndexViewLien vers cette rubrique
- class ArchiveIndexViewLien vers cette définition
Une page de sommaire de premier niveau affichant les « derniers » objets par date. Les objets ayant une date dans le futur ne sont pas inclus, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
Contexte
En plus du contexte fourni par
django.views.generic.list.MultipleObjectMixin(viadjango.views.generic.dates.BaseDateListView), le contexte de gabarit sera :date_list: un objetQuerySetcontenant toutes les années possédant des objets disponibles en fonction dequeryset, représentés sous forme d’objetsdatetime.datetimedans l’ordre chronologique inverse.
Notes
La valeur par défaut de
context_object_nameestlatest.La valeur par défaut de
template_name_suffixest_archive.Le comportement par défaut est de fournir
date_listpar année, mais il est possible aussi d’utiliser des mois ou des jours en modifiant l’attributdate_list_period. Cela s’applique également à toutes les sous-classes de cette vue.
Exemple myapp/urls.py :
from django.urls import path from django.views.generic.dates import ArchiveIndexView from myapp.models import Article urlpatterns = [ path('archive/', ArchiveIndexView.as_view(model=Article, date_field="pub_date"), name="article_archive"), ]Exemple de myapp/article_archive.html:
<ul> {% for article in latest %} <li>{{ article.pub_date }}: {{ article.title }}</li> {% endfor %} </ul>Ceci affiche tous les articles.
YearArchiveViewLien vers cette rubrique
- class YearArchiveViewLien vers cette définition
Une page d’archives annuelles affichant tous les mois disponibles d’une année donnée. Les objets ayant une date dans le futur ne sont pas inclus, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
- make_object_listLien vers cette définition
Un booléen indiquant s’il faut récupérer la liste complète des objets de l’année courante et les passer au gabarit. Si la valeur est à
True, la liste sera disponible dans le contexte. Sinon, si la valeur est àFalse, le jeu de requêteNonesera utilisé en tant que liste d’objets. Par défaut, cette valeur vautFalse.
- get_make_object_list()Lien vers cette définition
Détermine si une liste d’objets est renvoyée comme une portion du contexte. Renvoie
make_object_listpar défaut.
Contexte
En plus du contexte fourni par
django.views.generic.list.MultipleObjectMixin(viadjango.views.generic.dates.BaseDateListView), le contexte de gabarit sera :date_list: un objetQuerySetcontenant tous les mois possédant des objets disponibles en fonction dequeryset, représentés sous forme d’objetsdatetime.datetimedans l’ordre chronologique.year: un objetdatereprésentant l’année indiquée.next_year: un objetdatereprésentant le premier jour de l’année suivante, en fonction deallow_emptyetallow_future.previous_year: un objetdatereprésentant le premier jour de l’année précédente, en fonction deallow_emptyetallow_future.
Notes
La valeur par défaut de
template_name_suffixest_archive_year.
Exemple myapp/views.py :
from django.views.generic.dates import YearArchiveView from myapp.models import Article class ArticleYearArchiveView(YearArchiveView): queryset = Article.objects.all() date_field = "pub_date" make_object_list = True allow_future = TrueExemple myapp/urls.py :
from django.urls import path from myapp.views import ArticleYearArchiveView urlpatterns = [ path('<int:year>/', ArticleYearArchiveView.as_view(), name="article_year_archive"), ]Exemple myapp/article_archive_year.html :
<ul> {% for date in date_list %} <li>{{ date|date }}</li> {% endfor %} </ul> <div> <h1>All Articles for {{ year|date:"Y" }}</h1> {% for obj in object_list %} <p> {{ obj.title }} - {{ obj.pub_date|date:"F j, Y" }} </p> {% endfor %} </div>
MonthArchiveViewLien vers cette rubrique
- class MonthArchiveViewLien vers cette définition
Une page d’archives mensuelles affichant tous les objets disponibles d’un mois donné. Les objets ayant une date dans le futur ne sont pas inclus, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
Contexte
En plus du contexte fourni par la classe
MultipleObjectMixin(viaBaseDateListView), le contexte du gabarit sera :date_list: un objetQuerySetcontenant tous les jours possédant des objets disponibles dans le mois indiqué, en fonction dequeryset, représentés sous forme d’objetsdatetime.datetimedans l’ordre chronologique.month: un objetdatereprésentant le mois donné.next_month: un objetdatereprésentant le premier jour du mois suivant, en fonction deallow_emptyetallow_future.previous_month: un objetdatereprésentant le premier jour du mois précédent, en fonction deallow_emptyetallow_future.
Notes
La valeur par défaut de
template_name_suffixest_archive_month.
Exemple myapp/views.py :
from django.views.generic.dates import MonthArchiveView from myapp.models import Article class ArticleMonthArchiveView(MonthArchiveView): queryset = Article.objects.all() date_field = "pub_date" allow_future = TrueExemple myapp/urls.py :
from django.urls import path from myapp.views import ArticleMonthArchiveView urlpatterns = [ # Example: /2012/08/ path('<int:year>/<int:month>/', ArticleMonthArchiveView.as_view(month_format='%m'), name="archive_month_numeric"), # Example: /2012/aug/ path('<int:year>/<str:month>/', ArticleMonthArchiveView.as_view(), name="archive_month"), ]Exemple myapp/article_archive_month.html :
<ul> {% for article in object_list %} <li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li> {% endfor %} </ul> <p> {% if previous_month %} Previous Month: {{ previous_month|date:"F Y" }} {% endif %} {% if next_month %} Next Month: {{ next_month|date:"F Y" }} {% endif %} </p>
WeekArchiveViewLien vers cette rubrique
- class WeekArchiveViewLien vers cette définition
Une page d’archives hebdomadaires affichant tous les objets disponibles d’une semaine donnée. Les objets ayant une date dans le futur ne sont pas inclus, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
Contexte
En plus du contexte fourni par la classe
MultipleObjectMixin(viaBaseDateListView), le contexte du gabarit sera :week: un objetdatereprésentant le premier jour de la semaine indiquée.next_week: un objetdatereprésentant le premier jour de la semaine suivante, en fonction deallow_emptyetallow_future.previous_week: un objetdatereprésentant le premier jour de la semaine précédente, en fonction deallow_emptyetallow_future.
Notes
La valeur par défaut de
template_name_suffixest_archive_week.L’attribut
week_formatest une chaîne de formatstrptime()utilisée pour récupérer le numéro de semaine. Les valeurs suivantes sont prises en charge :'%U': basé sur le système de semaines des États-Unis où la semaine commence un dimanche. Il s’agit de la valeur par défaut.'%W': semblable à'%U', excepté la semaine qui commence par le lundi. Ce n’est pas la même chose que le numéro de semaine ISO 8601.'%V': le numéro de semaine ISO 8601 où la semaine commence un lundi.
Exemple myapp/views.py :
from django.views.generic.dates import WeekArchiveView from myapp.models import Article class ArticleWeekArchiveView(WeekArchiveView): queryset = Article.objects.all() date_field = "pub_date" week_format = "%W" allow_future = TrueExemple myapp/urls.py :
from django.urls import path from myapp.views import ArticleWeekArchiveView urlpatterns = [ # Example: /2012/week/23/ path('<int:year>/week/<int:week>/', ArticleWeekArchiveView.as_view(), name="archive_week"), ]Exemple myapp/article_archive_week.html :
<h1>Week {{ week|date:'W' }}</h1> <ul> {% for article in object_list %} <li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li> {% endfor %} </ul> <p> {% if previous_week %} Previous Week: {{ previous_week|date:"W" }} of year {{ previous_week|date:"Y" }} {% endif %} {% if previous_week and next_week %}--{% endif %} {% if next_week %} Next week: {{ next_week|date:"W" }} of year {{ next_week|date:"Y" }} {% endif %} </p>Dans cet exemple, le numéro de semaine est affiché. N’oubliez pas que les numéros de semaine produits par le filtre de gabarit
dateavec le caractère de mise en forme'W'ne sont pas toujours identiques aux numéros de semaine produits par la chaîne de mise en forme'%W'destrftime()etstrptime(). Par exemple, pour l’année 2015, les numéros de semaine produits pardatesont plus élevés de un par rapport à ceux destrftime(). Il n’existe pas d’équivalent à la chaîne de format'%U'destrftime()pourdate. Il faudrait donc éviter d’utiliserdatepour générer des URL pour la vueWeekArchiveView.
DayArchiveViewLien vers cette rubrique
- class DayArchiveViewLien vers cette définition
Une page d’archives journalières affichant tous les objets disponibles d’un jour donné. Les jours ayant une date dans le futur génèrent une erreur 404, sans considérer si des objets existent pour les jours futurs, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
Contexte
En plus du contexte fourni par la classe
MultipleObjectMixin(viaBaseDateListView), le contexte du gabarit sera :day: un objetdatereprésentant le jour indiqué.next_day: un objetdatereprésentant le jour suivant, en fonction deallow_emptyetallow_future.previous_day: un objetdatereprésentant le jour précédent, en fonction deallow_emptyetallow_future.next_month: un objetdatereprésentant le premier jour du mois suivant, en fonction deallow_emptyetallow_future.previous_month: un objetdatereprésentant le premier jour du mois précédent, en fonction deallow_emptyetallow_future.
Notes
La valeur par défaut de
template_name_suffixest_archive_day.
Exemple myapp/views.py :
from django.views.generic.dates import DayArchiveView from myapp.models import Article class ArticleDayArchiveView(DayArchiveView): queryset = Article.objects.all() date_field = "pub_date" allow_future = TrueExemple myapp/urls.py :
from django.urls import path from myapp.views import ArticleDayArchiveView urlpatterns = [ # Example: /2012/nov/10/ path('<int:year>/<str:month>/<int:day>/', ArticleDayArchiveView.as_view(), name="archive_day"), ]Exemple myapp/article_archive_day.html :
<h1>{{ day }}</h1> <ul> {% for article in object_list %} <li>{{ article.pub_date|date:"F j, Y" }}: {{ article.title }}</li> {% endfor %} </ul> <p> {% if previous_day %} Previous Day: {{ previous_day }} {% endif %} {% if previous_day and next_day %}--{% endif %} {% if next_day %} Next Day: {{ next_day }} {% endif %} </p>
TodayArchiveViewLien vers cette rubrique
- class TodayArchiveViewLien vers cette définition
Une page d’archives journalières affichant tous les objets disponibles pour aujourd’hui. C’est exactement la même vue que
django.views.generic.dates.DayArchiveView, excepté que c’est la date du jour qui est prise en compte à la place des paramètresyear/month/day.Ancêtres (MRO)
Notes
La valeur par défaut de
template_name_suffixest_archive_today.
Exemple myapp/views.py :
from django.views.generic.dates import TodayArchiveView from myapp.models import Article class ArticleTodayArchiveView(TodayArchiveView): queryset = Article.objects.all() date_field = "pub_date" allow_future = TrueExemple myapp/urls.py :
from django.urls import path from myapp.views import ArticleTodayArchiveView urlpatterns = [ path('today/', ArticleTodayArchiveView.as_view(), name="archive_today"), ]
DateDetailViewLien vers cette rubrique
- class DateDetailViewLien vers cette définition
Une page représentant un objet individuel. Si l’objet contient une valeur de date dans le futur, la vue génère par défaut une erreur 404, sauf si
allow_futureest défini àTrue.Ancêtres (MRO)
Contexte
Inclut l’objet unique associé au
modeldéfini dans la vueDateDetailView.
Notes
La valeur par défaut de
template_name_suffixest_detail.
Exemple myapp/urls.py :
from django.urls import path from django.views.generic.dates import DateDetailView urlpatterns = [ path('<int:year>/<str:month>/<int:day>/<int:pk>/', DateDetailView.as_view(model=Article, date_field="pub_date"), name="archive_date_detail"), ]Exemple myapp/article_detail.html :
<h1>{{ object.title }}</h1>