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
setup()
dispatch()
http_method_not_allowed()
get_template_names()
get_slug_field()
get_queryset()
get_object()
get_context_object_name()
get_context_data()
get()
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>
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
setup()
dispatch()
http_method_not_allowed()
get_template_names()
get_queryset()
get_context_object_name()
get_context_data()
get()
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 enobjet_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 :
Méthodes
-
get
(request, *args, **kwargs)¶ Ajoute
object_list
au contexte. Siallow_empty
vautTrue
, une liste vide est affichée. Siallow_empty
vautFalse
, une erreur 404 est générée.
-