通用顯示視圖¶
以下兩個基於類別的通用視圖旨在顯示資料。在許多專案中,它們通常是最常用的視圖。
DetailView
¶
- class django.views.generic.detail.DetailView¶
當此視圖執行時,
self.object
將包含視圖正在操作的物件。祖先 (MRO)
此視圖繼承了以下視圖的方法和屬性
方法流程圖
範例 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
範例 myapp/urls.py:
from django.urls import path from article.views import ArticleDetailView urlpatterns = [ path("<slug:slug>/", ArticleDetailView.as_view(), name="article-detail"), ]
範例 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¶
一個用於顯示單一物件的基本視圖。它不打算直接使用,而是作為
django.views.generic.detail.DetailView
或其他表示單一物件詳細資訊的視圖的父類別。祖先 (MRO)
此視圖繼承了以下視圖的方法和屬性
方法
- get(request, *args, **kwargs)¶
將
object
加入到內容中。
ListView
¶
- class django.views.generic.list.ListView¶
一個表示物件清單的頁面。
當此視圖執行時,
self.object_list
將包含視圖正在操作的物件清單(通常但不一定是查詢集)。祖先 (MRO)
此視圖繼承了以下視圖的方法和屬性
方法流程圖
範例 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
範例 myapp/urls.py:
from django.urls import path from article.views import ArticleListView urlpatterns = [ path("", ArticleListView.as_view(), name="article-list"), ]
範例 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>
如果您正在使用分頁,您可以從分頁文件範例模板進行調整。
- class django.views.generic.list.BaseListView¶
一個用於顯示物件清單的基本視圖。它不打算直接使用,而是作為
django.views.generic.list.ListView
或其他表示物件清單的視圖的父類別。祖先 (MRO)
此視圖繼承了以下視圖的方法和屬性
方法
- get(request, *args, **kwargs)¶
將
object_list
加入到內容中。如果allow_empty
為 True,則顯示一個空列表。如果allow_empty
為 False,則引發 404 錯誤。