内置基于类的视图API

基于类的视图API引用。有关介绍性材料,请参见 基于类的视图 主题指南。

规范

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

基于类的视图使用 as_view() 分类方法:

urlpatterns = [
    path("view/", MyView.as_view(size=42)),
]

带有视图参数的线程安全性

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

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

基本视图与常规视图

基于基类的视图可以被认为是 起源 视图,可以由自己使用或从中继承。它们可能无法提供项目所需的所有功能,在这种情况下,存在扩展基本视图功能的混合。

Django的通用视图是基于这些基本视图构建的,并且是作为显示对象细节等常用模式的快捷方式开发的。它们采用视图开发中发现的某些常见习惯用法和模式,并对它们进行抽象,这样您就可以快速地编写数据的通用视图,而无需重复自己的工作。

大多数通用视图都需要 queryset 密钥,这是 QuerySet 实例;参见 进行查询 有关的详细信息 QuerySet 对象。