基于类的视图 API 参考。关于介绍性材料,请参见 基于类的视图 主题指南。
基于类的视图所服务的每个请求都有一个独立的状态,因此,在实例上存储状态变量是安全的(即,self.foo = 3
是一个线程安全的操作)。
基于类的视图使用 as_view()
类方法部署到一个 URL 模式中。
urlpatterns = [
path("view/", MyView.as_view(size=42)),
]
线程安全与视图参数
传递给视图的参数在视图的每个实例之间共享。这意味着你不应该使用列表、字典或任何其他可更改的对象作为视图的参数。如果你这样做了,而共享对象又被修改了,那么访问你视图的一个用户的行为可能会对访问同一视图的后续用户产生影响。
传入 as_view()
的参数将被分配到用于服务请求的实例上。使用前面的例子,这意味着在 MyView
上的每个请求都能够使用 self.size
。参数必须与类上已经存在的属性相对应(在 hasattr
检查时返回 True
)。
12月 05, 2023