# Django 5.2.8 documentation

# Generisk datumvisning

Datumbaserade generiska vyer, som tillhandahålls i `django.views.generic.dates`, är vyer för att visa drilldown-sidor för datumbaserade data.

Observera

Några av exemplen på den här sidan utgår från att en `Artikel`-modell har definierats på följande sätt i `myapp/models.py`:

    from django.db import models
    from django.urls 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`

class ArchiveIndexView

  En indexsida på översta nivån som visar de ”senaste” objekten, efter datum. Objekt med ett datum i framtiden inkluderas inte om du inte ställer in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseArchiveIndexView`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  Kontext

  Förutom det sammanhang som tillhandahålls av `django.views.generic.list.MultipleObjectMixin` (via `django.views.generic.dates.BaseDateListView`), kommer mallens sammanhang att vara:

  - `date_list`: Ett `QuerySet`-objekt som innehåller alla år som har objekt tillgängliga enligt `queryset`, representerade som `datetime.datetime`-objekt, i fallande ordning.

  Noter

  - Använder ett standardnamn för `context_object_name` på `latest`.

  - Använder standardvärdet `template_name_suffix` för `_archive`.

  - Standard är att tillhandahålla `date_list` per år, men detta kan ändras till månad eller dag med hjälp av attributet `date_list_period`. Detta gäller även för alla underklassvyer.

  Exempel 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",
          ),
      ]

  Exempel myapp/article_archive.html:

      <ul>
          {% for article in latest %}
              <li>{{ article.pub_date }}: {{ article.title }}</li>
          {% endfor %}
      </ul>

  Detta kommer att mata ut alla artiklar.

## `ÅrArkivView`

class YearArchiveView

  En årlig arkivsida som visar alla tillgängliga månader under ett visst år. Objekt med ett datum i framtiden visas inte om du inte ställer in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseYearArchiveView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  make_object_list

    En boolean som anger om den fullständiga listan över objekt för det här året ska hämtas och skickas till mallen. Om `True`, kommer listan med objekt att göras tillgänglig för kontexten. Om `False`, kommer frågeuppsättningen `None` att användas som objektlista. Som standard är detta `False`.

  get_make_object_list()

    Bestämmer om en objektlista ska returneras som en del av kontexten. Returnerar `make_object_list` som standard.

  Kontext

  Förutom det sammanhang som tillhandahålls av `django.views.generic.list.MultipleObjectMixin` (via `django.views.generic.dates.BaseDateListView`), kommer mallens sammanhang att vara:

  - `date_list`: Ett `QuerySet`-objekt som innehåller alla månader som har objekt tillgängliga enligt `queryset`, representerade som `datetime.datetime`-objekt, i stigande ordning.

  - `year`: Ett `date`-objekt som representerar det angivna året.

  - `next_year`: Ett `date`-objekt som representerar den första dagen i nästa år, enligt `allow_empty` och `allow_future`.

  - `previous_year`: Ett `date`-objekt som representerar den första dagen i det föregående året, enligt `allow_empty` och `allow_future`.

  Noter

  - Använder standardvärdet för `template_name_suffix` `_archive_year`.

  Exempel 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 = True

  Exempel myapp/urls.py:

      from django.urls import path

      from myapp.views import ArticleYearArchiveView

      urlpatterns = [
          path("<int:year>/", ArticleYearArchiveView.as_view(), name="article_year_archive"),
      ]

  Exempel 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>

## `MonthArchiveView`

class MonthArchiveView

  En månatlig arkivsida som visar alla objekt under en viss månad. Objekt med ett datum i framtiden visas inte om du inte har ställt in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseMonthArchiveView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.MonthMixin`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  Kontext

  Förutom det sammanhang som tillhandahålls av `MultipleObjectMixin` (via `BaseDateListView`), kommer mallens sammanhang att vara:

  - `datum_lista`: Ett `QuerySet`-objekt som innehåller alla dagar som har objekt tillgängliga i den angivna månaden, enligt `queryset`, representerade som `datetime.datetime`-objekt, i stigande ordning.

  - `month`: Ett `date`-objekt som representerar den angivna månaden.

  - `next_month`: Ett `date`-objekt som representerar den första dagen i nästa månad, enligt `allow_empty` och `allow_future`.

  - `previous_month`: Ett `date`-objekt som representerar den första dagen i föregående månad, enligt `allow_empty` och `allow_future`.

  Noter

  - Använder standardvärdet för `template_name_suffix` `_archive_month`.

  Exempel 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 = True

  Exempel 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",
          ),
      ]

  Exempel 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>

## `WeekArchiveView`

class WeekArchiveView

  En veckovis arkivsida som visar alla objekt under en viss vecka. Objekt med ett datum i framtiden visas inte om du inte har ställt in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseWeekArchiveView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.WeekMixin`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  Kontext

  Förutom det sammanhang som tillhandahålls av `MultipleObjectMixin` (via `BaseDateListView`), kommer mallens sammanhang att vara:

  - `week`: Ett `date`-objekt som representerar den första dagen i den angivna veckan.

  - `next_week`: Ett `date`-objekt som representerar den första dagen i nästa vecka, enligt `allow_empty` och `allow_future`.

  - `previous_week`: Ett `date`-objekt som representerar den första dagen i föregående vecka, enligt `allow_empty` och `allow_future`.

  Noter

  - Använder standardvärdet för `template_name_suffix` `_archive_week`.

  - Attributet `week_format` är en `strptime()` formatsträng som används för att tolka veckonumret. Följande värden stöds:

    - `'%U'`: Baserat på USA:s veckosystem där veckan börjar på söndag. Detta är standardvärdet.

    - `'%W'`: Liknar `'%U'`, men antar att veckan börjar på måndag. Detta är inte samma sak som ISO 8601-veckonumret.

    - `'%V'`: ISO 8601 veckonummer där veckan börjar på måndag.

  Exempel 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 = True

  Exempel 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",
          ),
      ]

  Exempel 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>

  I det här exemplet skriver du ut veckonumret. Tänk på att veckonummer som beräknas av mallfiltret `date` med formattecknet `'W'` inte alltid är samma som de som beräknas av `strftime()` och `strptime()` med formatsträngen `'%W'`. För år 2015, till exempel, är veckonummer som matas ut av `date` högre med ett jämfört med de som matas ut av `strftime()`. Det finns ingen motsvarighet till formatsträngen `'%U'` `strftime()` i `date`. Därför bör du undvika att använda `date` för att generera URL:er för `WeekArchiveView`.

## `DayArchiveView`

class DayArchiveView

  En dagarkivsida som visar alla objekt under en viss dag. Dagar i framtiden ger ett 404-fel, oavsett om det finns några objekt för framtida dagar, såvida du inte har ställt in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseDayArchiveView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.MonthMixin`

  - `django.views.generic.dates.DayMixin`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  Kontext

  Förutom det sammanhang som tillhandahålls av `MultipleObjectMixin` (via `BaseDateListView`), kommer mallens sammanhang att vara:

  - `day`: Ett `date`-objekt som representerar den angivna dagen.

  - `next_day`: Ett `date`-objekt som representerar nästa dag, enligt `allow_empty` och `allow_future`.

  - `previous_day`: Ett `date`-objekt som representerar föregående dag, enligt `allow_empty` och `allow_future`.

  - `next_month`: Ett `date`-objekt som representerar den första dagen i nästa månad, enligt `allow_empty` och `allow_future`.

  - `previous_month`: Ett `date`-objekt som representerar den första dagen i föregående månad, enligt `allow_empty` och `allow_future`.

  Noter

  - Använder standardvärdet för `template_name_suffix` `_archive_day`.

  Exempel 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 = True

  Exempel 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",
          ),
      ]

  Exempel 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>

## `TodayArchiveView`

class TodayArchiveView

  En dagarkivsida som visar alla objekt för today. Detta är exakt samma sak som `django.views.generic.dates.DayArchiveView`, förutom att dagens datum används istället för argumenten `år`/`månad`/`dag`.

  Ancestors (MRO)

  - `django.views.generic.list.MultipleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseTodayArchiveView`

  - `django.views.generic.dates.BaseDayArchiveView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.MonthMixin`

  - `django.views.generic.dates.DayMixin`

  - `django.views.generic.dates.BaseDateListView`

  - `django.views.generic.list.MultipleObjectMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.base.View`

  Noter

  - Använder standardvärdet `template_name_suffix` `_archive_today`.

  Exempel 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 = True

  Exempel myapp/urls.py:

      from django.urls import path

      from myapp.views import ArticleTodayArchiveView

      urlpatterns = [
          path("today/", ArticleTodayArchiveView.as_view(), name="archive_today"),
      ]

  Var finns exempelmallen för `TodayArchiveView`?

  Denna vy använder som standard samma mall som `DayArchiveView`, som finns i det föregående exemplet. Om du behöver en annan mall, ställ in attributet `template_name` till namnet på den nya mallen.

## `DateDetailView`

class DateDetailView

  En sida som representerar ett enskilt objekt. Om objektet har ett datumvärde i framtiden kommer vyn att ge ett 404-fel som standard, såvida du inte ställer in `allow_future` till `True`.

  Ancestors (MRO)

  - `django.views.generic.detail.SingleObjectTemplateResponseMixin`

  - `django.views.generic.base.TemplateResponseMixin`

  - `django.views.generic.dates.BaseDateDetailView`

  - `django.views.generic.dates.YearMixin`

  - `django.views.generic.dates.MonthMixin`

  - `django.views.generic.dates.DayMixin`

  - `django.views.generic.dates.DateMixin`

  - `django.views.generic.detail.BaseDetailView`

  - `django.views.generic.detail.SingleObjectMixin`

  - `django.views.generic.base.View`

  Kontext

  - Innehåller det enskilda objekt som är associerat med den `modell` som anges i `DateDetailView`.

  Noter

  - Använder standardvärdet `template_name_suffix` för `_detail`.

  Exempel 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",
          ),
      ]

  Exempel myapp/article_detail.html:

      <h1>{{ object.title }}</h1>

Observera

Alla generiska vyer som anges ovan har matchande `Base`-vyer som bara skiljer sig åt genom att de inte innehåller `MultipleObjectTemplateResponseMixin` (för arkivvyerna) eller `SingleObjectTemplateResponseMixin` (för `DateDetailView`):

class BaseArchiveIndexView

class BaseYearArchiveView

class BaseMonthArchiveView

class BaseWeekArchiveView

class BaseDayArchiveView

class BaseTodayArchiveView

class BaseDateDetailView