# Django 5.2.8 documentation

# Generiska displayvyer

De två följande generiska klassbaserade vyerna är utformade för att visa data. I många projekt är de vanligtvis de mest använda vyerna.

## `DetailView`

class django.views.generic.detail.DetailView

  När denna vy körs kommer `self.object` att innehålla det objekt som vyn körs på.

  Ancestors (MRO)

  Denna vy ärver metoder och attribut från följande vyer:

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

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

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

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

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

  Flödesschema för metod

  1. `setup()`

  2. `dispatch()`

  3. `http_method_not_allowed()`

  4. `get_template_names()`

  5. `get_slug_field()`

  6. `get_queryset()`

  7. `get_object()`

  8. `get_context_object_name()`

  9. `get_context_data()`

  10. `get()`

  11. `render_to_response()`

  Exempel myapp/views.py:

      from django.utils import timezone
      from django.views.generic.detail import DetailView

      from articles.models import Article

      class ArticleDetailView(DetailView):
          model = Article

          def get_context_data(self, **kwargs):
              context = super().get_context_data(**kwargs)
              context["now"] = timezone.now()
              return context

  Exempel myapp/urls.py:

      from django.urls import path

      from article.views import ArticleDetailView

      urlpatterns = [
          path("<slug:slug>/", ArticleDetailView.as_view(), name="article-detail"),
      ]

  Exempel myapp/article_detail.html:

      <h1>{{ object.headline }}</h1>
      <p>{{ object.content }}</p>
      <p>Reporter: {{ object.reporter }}</p>
      <p>Published: {{ object.pub_date|date }}</p>
      <p>Date: {{ now|date }}</p>

class django.views.generic.detail.BaseDetailView

  En basvy för att visa ett enda objekt. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till `django.views.generic.detail.DetailView` eller andra vyer som representerar detaljer om ett enda objekt.

  Ancestors (MRO)

  Denna vy ärver metoder och attribut från följande vyer:

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

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

  Metoder

  get(request, *args, **kwargs)

    Lägger till `object` i kontexten.

## `ListView`

class django.views.generic.list.ListView

  En sida som representerar en lista med objekt.

  När den här vyn körs kommer `self.object_list` att innehålla listan över objekt (vanligtvis, men inte nödvändigtvis en queryset) som vyn arbetar med.

  Ancestors (MRO)

  Denna vy ärver metoder och attribut från följande vyer:

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

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

  - `django.views.generic.list.BaseListView`

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

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

  Flödesschema för metod

  1. `setup()`

  2. `dispatch()`

  3. `http_method_not_allowed()`

  4. `get_template_names()`

  5. `get_queryset()`

  6. `get_context_object_name()`

  7. `get_context_data()`

  8. `get()`

  9. `render_to_response()`

  Exempel på views.py:

      from django.utils import timezone
      from django.views.generic.list import ListView

      from articles.models import Article

      class ArticleListView(ListView):
          model = Article
          paginate_by = 100  # if pagination is desired

          def get_context_data(self, **kwargs):
              context = super().get_context_data(**kwargs)
              context["now"] = timezone.now()
              return context

  Exempel myapp/urls.py:

      from django.urls import path

      from article.views import ArticleListView

      urlpatterns = [
          path("", ArticleListView.as_view(), name="article-list"),
      ]

  Exempel myapp/article_list.html:

      <h1>Articles</h1>
      <ul>
      {% for article in object_list %}
          <li>{{ article.pub_date|date }} - {{ article.headline }}</li>
      {% empty %}
          <li>No articles yet.</li>
      {% endfor %}
      </ul>

  Om du använder paginering kan du anpassa exempelmallen från pagineringsdokumenten.

class django.views.generic.list.BaseListView

  En basvy för att visa en lista med objekt. Den är inte avsedd att användas direkt, utan snarare som en överordnad klass till `django.views.generic.list.ListView` eller andra vyer som representerar listor med objekt.

  Ancestors (MRO)

  Denna vy ärver metoder och attribut från följande vyer:

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

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

  Metoder

  get(request, *args, **kwargs)

    Lägger till `object_list` till kontexten. Om `allow_empty` är True så visas en tom lista. Om `allow_empty` är False så uppstår ett 404-fel.