Django源代码写DetailView与ListView
基于類的通用視圖 - 展平索引
通用顯示視圖
以下兩個通用的基于類的視圖旨在顯示數據。在許多項目中,它們通常是最常用的視圖。
一、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錯誤
總結
以上是生活随笔為你收集整理的Django源代码写DetailView与ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php excel导出科学计数法,php
- 下一篇: python中格式化字符串