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
¶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
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
¶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
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>
If you’re using pagination, you can adapt the example template from
the pagination docs. Change instances of
contacts
in that example template to page_obj
.
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. Si allow_empty
vaut True
, une liste vide est affichée. Si allow_empty
vaut False
, une erreur 404 est générée.
août 01, 2018