Skip to main content

内置基于类的视图API

基于类的视图API参考。有关介绍材料,请参阅 基于类的视图 主题指南。

规范

基于类的视图所服务的每个请求都具有独立的状态;因此,在实例上存储状态变量是安全的(即,self.foo = 3 是线程安全操作)。

使用 as_view() 类方法将基于类的视图部署到URL模式中:

urlpatterns = [
    url(r'^view/$', MyView.as_view(size=42)),
]

线程安全与视图参数

传递给视图的参数在视图的每个实例之间共享。这意味着你不应该使用列表,字典或任何其他可变对象作为视图的参数。如果这样做,并且修改了共享对象,则访问您的视图的一个用户的操作可能会影响访问同一视图的后续用户。

传递到 as_view() 的参数将分配到用于服务请求的实例。使用前面的示例,这意味着 MyView 上的每个请求都能够使用 self.size。参数必须对应于类上已存在的属性(在 hasattr 检查上返回 True)。

基本视图与常规视图

基于类的视图可以被认为是 parent 视图,可以自己使用或继承。他们可能不提供项目所需的所有能力,在这种情况下,有mixins,它扩展了基础视图可以做什么。

Django的通用视图是基于这些基本视图构建的,并且被开发为常见的使用模式的快捷方式,例如显示对象的详细信息。它们采用在视图开发中发现的某些常见习语和模式,并对它们进行抽象,以便您可以快速写入数据的常见视图,而无需重复自己。

大多数通用视图需要 queryset 密钥,这是一个 QuerySet 实例;有关 QuerySet 对象的更多信息,请参阅 进行查询