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¶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:
Flödesschema för metod
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>
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:
Metoder
Lägger till object i kontexten.
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:
Flödesschema för metod
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.
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:
Metoder
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.
aug. 11, 2025