基于类的通用视图 - 展平索引
通用显示视图
以下两个通用的基于类的视图旨在显示数据。在许多项目中,它们通常是最常用的视图。
一、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错误