基于類的通用視圖 - 展平索引
通用顯示視圖
以下兩個通用的基于類的視圖旨在顯示數據。在許多項目中,它們通常是最常用的視圖。
一、DetailView
? ? ? ?django.views.generic.detail.DetailView
在執行此視圖時,self.object將包含視圖正在操作的對象。
此視圖從以下視圖繼承方法和屬性:
-
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
示例myapp / views.py:
class BlogDetailView(DetailView):model = Blogdef get_context_data(self, **kwargs):context = super().get_context_data(**kwargs)context['date'] = timezone.now()blog =Blog.objects.all().first()context['title'] = blog.b_titlecontext['content'] = blog.b_contentreturn context
示例myapp / urls.py:
url('blogsdetail/(?P<pk>\d+)/', views.BlogDetailView.as_view(), name='blog-detail'),
示例myapp / article_detail.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1> 文章詳情 </h1><p>博客標題: {{ title }}</p>
<p>博客內容: {{ content }}</p>
<p>Date: {{ date }}</p>
</body>
</html>
二、ListView
django.views.generic.list.ListView
表示對象列表的頁面。
在執行此視圖時,self.object_list將包含視圖正在操作的對象列表(通常但不一定是查詢集)。
此視圖從以下視圖繼承方法和屬性:
-
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
示例views.py:
class BlogListView(ListView):template_name = 'Blogs.html'model = Blog
示例myapp / urls.py:
url(r'^blogs/', views.BlogListView.as_view()),
示例myapp / article_list.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>博客列表</title>
</head>
<body><h2>今日熱門</h2><ul>{% for blog in blog_list %}<li><a href="{% url 'app:blog-detail' blog.id %}">{{ blog.b_title }}</a>{{ blog.b_content }}</li>{% endfor %}</ul></body>
</html>
?
如果您正在使用分頁,則可以從分頁文檔中調整示例模板。contacts將該示例模板中的實例更改 為page_obj。
類django.views.generic.list.BaseListView
用于顯示對象列表的基本視圖。它不是直接使用,而是作為django.views.generic.list.ListView表示對象列表的其他視圖的父類 。
此視圖從以下視圖繼承方法和屬性:
django.views.generic.list.MultipleObjectMixin
django.views.generic.base.View
方法
get(請求,* args,** kwargs)
添加object_list到上下文。如果 allow_empty 為True則顯示空列表。如果 allow_empty為False,則引發404錯誤