一般的な表示ビュー—Djangoドキュメント
一般的な表示ビュー
次の2つの一般的なクラスベースのビューは、データを表示するように設計されています。 多くのプロジェクトでは、通常、これらは最も一般的に使用されるビューです。
DetailView
- class django.views.generic.detail.DetailView
このビューの実行中、
self.object
には、ビューが操作しているオブジェクトが含まれます。祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
django.views.generic.detail.SingleObjectTemplateResponseMixin
django.views.generic.detail.BaseDetailView
メソッドフローチャート
get()
例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>
ListView
- class django.views.generic.list.ListView
オブジェクトのリストを表すページ。
このビューの実行中、
self.object_list
には、ビューが操作しているオブジェクトのリスト(通常はクエリセットですが、必ずしもそうとは限りません)が含まれます。祖先(MRO)
このビューは、次のビューからメソッドと属性を継承します。
メソッドフローチャート
get()
サンプル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>
ページ付けを使用している場合は、ページ付けドキュメントからサンプルテンプレートを適合させることができます。 そのサンプルテンプレートの
contacts
のインスタンスをpage_obj
に変更します。
- 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エラーが発生します。