Vues génériques d’affichageLien vers cette rubrique
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.
DetailViewLien vers cette rubrique
- class django.views.generic.detail.DetailViewLien vers cette définition
Dans le code de cette vue,
self.objectcontient 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.SingleObjectTemplateResponseMixindjango.views.generic.detail.BaseDetailView
Index des méthodes
get()
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 contextExemple 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>
ListViewLien vers cette rubrique
- class django.views.generic.list.ListViewLien vers cette définition
Une page représentant une liste d’objets.
Dans le code de cette vue,
self.object_listcontient 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 :
Index des méthodes
get()
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 contextExemple 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
contactsde cet exemple enobjet_page.
- class django.views.generic.list.BaseListViewLien vers cette définition
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.ListViewou 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 :
Méthodes
- get(request, *args, **kwargs)Lien vers cette définition
Ajoute
object_listau contexte. Siallow_emptyvautTrue, une liste vide est affichée. Siallow_emptyvautFalse, une erreur 404 est générée.