diff --git a/docs/ref/class-based-views/generic-date-based.txt b/docs/ref/class-based-views/generic-date-based.txt index c6af23e421..0ae0bcdf42 100644 --- a/docs/ref/class-based-views/generic-date-based.txt +++ b/docs/ref/class-based-views/generic-date-based.txt @@ -7,6 +7,21 @@ Generic date views Date-based generic views, provided in :mod:`django.views.generic.dates`, are views for displaying drilldown pages for date-based data. +.. note:: + + Some of the examples on this page assume that an ``Article`` model has been + defined as follows in ``myapp/models.py``:: + + from django.db import models + from django.core.urlresolvers import reverse + + class Article(models.Model): + title = models.CharField(max_length=200) + pub_date = models.DateField() + + def get_absolute_url(self): + return reverse('article-detail', kwargs={'pk': self.pk}) + ArchiveIndexView ---------------- @@ -35,6 +50,31 @@ ArchiveIndexView month or day using the attribute ``date_list_period``. This also applies to all subclass views. + **Example views.py**:: + + from django.conf.urls import patterns, url + from django.views.generic.dates import ArchiveIndexView + + from myapp.models import Article + + urlpatterns = patterns('', + url(r'^archive/$', + ArchiveIndexView.as_view(model=Article, date_field="pub_date"), + name="article_archive"), + ) + + **Example myapp/article_archive.html**: + + .. code-block:: html+django + +
+ {{ obj.title }} - {{ obj.pub_date|date:"F j, Y" }} +
+ {% endfor %} ++ {% if previous_month %} + Previous Month: {{ previous_month|date:"F Y" }} + {% endif %} + {% if next_month %} + Next Month: {{ next_month|date:"F Y" }} + {% endif %} +
+ WeekArchiveView --------------- @@ -208,6 +339,65 @@ WeekArchiveView * Uses a default ``template_name_suffix`` of ``_archive_week``. + **Example 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" + make_object_list = True + week_format = "%W" + allow_future = True + + **Example urls.py**:: + + from django.conf.urls import patterns, url + + from myapp.views import ArticleWeekArchiveView + + urlpatterns = patterns('', + # Example: /2012/week/23/ + url(r'^(?P+ {% if previous_week %} + Previous Week: {{ previous_week|date:"F Y" }} + {% endif %} + {% if previous_week and next_week %}--{% endif %} + {% if next_week %} + Next week: {{ next_week|date:"F Y" }} + {% endif %} +
+ + In this example, you are outputting the week number. The default + ``week_format`` in the ``WeekArchiveView`` uses week format ``'%U'`` + which is based on the United States week system where the week begins on a + Sunday. The ``'%W'`` format uses the ISO week format and its week + begins on a Monday. The ``'%W'`` format is the same in both the + :func:`~time.strftime` and the :tfilter:`date`. + + However, the :tfilter:`date` template filter does not have an equivalent + output format that supports the US based week system. The :tfilter:`date` + filter ``'%U'`` outputs the number of seconds since the Unix epoch. + DayArchiveView -------------- @@ -265,6 +455,53 @@ DayArchiveView * Uses a default ``template_name_suffix`` of ``_archive_day``. + **Example 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" + make_object_list = True + allow_future = True + + **Example urls.py**:: + + from django.conf.urls import patterns, url + + from myapp.views import ArticleDayArchiveView + + urlpatterns = patterns('', + # Example: /2012/nov/10/ + url(r'^(?P+ {% if previous_day %} + Previous Day: {{ previous_day }} + {% endif %} + {% if previous_day and next_day %}--{% endif %} + {% if next_day %} + Next Day: {{ next_day }} + {% endif %} +
+ TodayArchiveView ---------------- @@ -289,6 +526,40 @@ TodayArchiveView * :class:`django.views.generic.dates.DateMixin` * :class:`django.views.generic.base.View` + **Notes** + + * Uses a default ``template_name_suffix`` of ``_archive_today``. + + **Example 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" + make_object_list = True + allow_future = True + + **Example urls.py**:: + + from django.conf.urls import patterns, url + + from myapp.views import ArticleTodayArchiveView + + urlpatterns = patterns('', + url(r'^today/$', + ArticleTodayArchiveView.as_view(), + name="archive_today"), + ) + + .. admonition:: Where is the example template for ``TodayArchiveView``? + + This view uses by default the same template as the + :class:`~DayArchiveView`, which is in the previous example. If you need + a different template, set the ``template_name`` attribute to be the + name of the new template. DateDetailView -------------- @@ -313,6 +584,32 @@ DateDetailView * :class:`django.views.generic.detail.SingleObjectMixin` * :class:`django.views.generic.base.View` + **Context** + + * Includes the single object associated with the ``model`` specified in + the ``DateDetailView``. + + **Notes** + + * Uses a default ``template_name_suffix`` of ``_detail``. + + **Example urls.py**:: + + from django.conf.urls import patterns, url + from django.views.generic.dates import DateDetailView + + urlpatterns = patterns('', + url(r'^(?P