# Documentation Django 3.1.9.dev

# Vues génériques d’affichage

Les deux vues fondées sur des classes suivantes sont conçues pour afficher des données. Pour beaucoup de projets, il s’agit habituellement des vues les plus fréquemment utilisées.

## `DetailView`

class `django.views.generic.detail.``DetailView`

  Dans le code de cette vue, `self.object` contient l’objet sur lequel portent les opérations de la vue.

  Ancêtres (MRO)

  Cette vue hérite des méthodes et des attributs des vues suivantes :

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

  Index des méthodes

  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()`

  Exemple 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

  Exemple myapp/urls.py :

      from django.urls import path

      from article.views import ArticleDetailView

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

  Exemple 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`

  A base view for displaying a single object. It is not intended to be used directly, but rather as a parent class of the `django.views.generic.detail.DetailView` or other views representing details of a single object.

  Ancêtres (MRO)

  Cette vue hérite des méthodes et des attributs des vues suivantes :

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

  Méthodes

  `get`(request, *args, **kwargs)

    Adds `object` to the context.

## `ListView`

class `django.views.generic.list.``ListView`

  Une page représentant une liste d’objets.

  Dans le code de cette vue, `self.object_list` contient la liste d’objets (normalement un jeu de requête, mais pas toujours) sur laquelle portent les opérations de la vue.

  Ancêtres (MRO)

  Cette vue hérite des méthodes et des attributs des vues suivantes :

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

  Index des méthodes

  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()`

  Exemple de fichier 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

  Exemple myapp/urls.py :

      from django.urls import path

      from article.views import ArticleListView

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

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

  Si vous utilisez la pagination, vous pouvez adapter le gabarit exemple de la documentation de pagination. Modifiez les instances de `contacts` de cet exemple en `objet_page`.

class `django.views.generic.list.``BaseListView`

  Une vue de base pour l’affichage d’une liste d’objets. Elle n’est pas conçue pour être utilisée directement, mais plutôt comme classe parente pour `django.views.generic.list.ListView` ou d’autres vues représentant des listes d’objets.

  Ancêtres (MRO)

  Cette vue hérite des méthodes et des attributs des vues suivantes :

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

  Méthodes

  `get`(request, *args, **kwargs)

    Ajoute `object_list` au contexte. Si `allow_empty` vaut `True`, une liste vide est affichée. Si `allow_empty` vaut `False`, une erreur 404 est générée.