内置基于类的视图 API — Django 文档

来自菜鸟教程
Django/docs/2.2.x/ref/class-based-views/index
跳转至:导航、​搜索

内置基于类的视图 API

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

规范

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

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

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

线程安全与视图参数

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


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


基础 vs 通用视图

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

Django 的通用视图建立在这些基本视图之上,并被开发为常见使用模式的快捷方式,例如显示对象的详细信息。 它们采用在视图开发中发现的某些常见习语和模式并将它们抽象出来,以便您可以快速编写常见的数据视图,而不必重复自己。

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