简介
视图是一个可调用对象,可以接收一个请求然后返回一个响应。这个可调用对象不仅仅限于函数,Django 同时提供一些可以用作视图的类。它们允许你结构化你的视图并且利用继承和混合重用代码。后面我们将介绍一些用于简单任务的通用视图,但你可能想要设计自己的可重用视图的结构以适合你的使用场景
Django 提供基本的视图类,它们适用于绝大多数的应用。所有的视图类继承自 View 类,它负责将视图连接到URL、HTTP 方法调度和其它简单的功能。
RedirectView 用于简单的HTTP 重定向,TemplateView 扩展基类来渲染模板。
在URLconf 中的简单用法
使用通用视图最简单的方法是直接在URLconf 中创建它们。如果你只是修改基于类的视图的一些简单属性,你可以将它们直接传递给as_view() 方法调用:
from django.conf.urls import url
from django.views.generic import TemplateView
urlpatterns = [
url(r'^about/',TemplateView.as_view(template_name="about.html")),
]
传递给as_view() 的参数将覆盖类中的属性。在这个例子中,我们设置TemplateView 的template_name。可以使用类似的方法覆盖RedirectView 的url 属性。
子类化通用视图
第二种,功能更强一点的使用通用视图的方式是继承一个已经存在的视图并在子类中覆盖其属性(例如template_name)或方法(例如get_context_data)以提供新的值或方法。例如,考虑只显示一个模板about.html 的视图。Django 有一个通用视图TemplateView来做这件事,所以我们可以简单地子类化它,并覆盖模板的名称:
#some_app/views/py
from django.views.generic import TemplateView
class AboutView(TemplateView):
template_name = "about.html"
然后我们只需要添加这个新的视图到我们的URLconf 中。TemplateView 是一个类不是一个函数,所以我们将URL 指向类的as_view() 方法,它让基于类的视图提供一个类似函数的入口:
from django.conf.urls import url
from some_app.views import AboutView
urlpatterns = [
url(r'^about/',AboutViews.as_views()),
]
展示视图
ListView
DetailView
编辑视图
FormView
CreateView
UpdateView
DeleteView