SingleObjectMixin
¶django.views.generic.detail。
SingleObjectMixin T0> ¶ T1>
提供一种查找与当前HTTP 请求关联的对象的机制。
方法和属性
model
¶视图要显示的模型。 指定model = Foo
效果等同于指定queryset = Foo.objects.all()
,其中Foo
表示objects
的default manager。
queryset
¶表示对象的一个QuerySet
。 如果提供,queryset
的值优先于model
的值。
警告
queryset
是一个具有可变值的类属性,所以直接使用它的时候必须小心。 在使用它之前,要么调用它的all()
方法要么使用get_queryset()
来获取它,这些方法会注意隐藏地克隆。
slug_field
¶模型中包含slug 的字段。 'slug'
默认为slug_field
。
slug_url_kwarg T0> ¶ T1>
URLConf 中包含slug 关键字参数的名称。 'slug'
默认为slug_url_kwarg
。
pk_url_kwarg
¶URLConf 中,包含主键的关键字参数的名称。
默认情况下,pk_url_kwarg
为'pk'
。
context_object_name T0> ¶ T1>
指定在context中使用的变量的名称。
query_pk_and_slug T0> ¶ T1>
如果True
,则会导致get_object()
使用主键和slug执行查找。 默认为False
。
此属性可以帮助缓解不安全的直接对象引用攻击。 当应用程序允许通过顺序主键访问单个对象时,攻击者可能会强制猜测所有URL;从而获得应用程序中所有对象的列表。 如果应该阻止访问单个对象的用户获取此列表,将True
设置为query_pk_and_slug
将有助于防止猜测URL,因为每个URL都需要两个正确的,顺序参数。 简单地使用独特的slug可能有相同的目的,但这种方案允许你有非独特的slug。
get_object
(queryset=None)¶返回该视图要显示的对象。 如果提供了queryset
,该查询将被用作对象的源;否则将使用get_queryset()
。 get_object()
在视图的参数中查找一个pk_url_kwarg
参数;如果找到此参数,此方法将使用该值执行基于主键的查找。 如果这个参数没有找到,该方法查找slug_url_kwarg
参数,使用slug_field
字段执行针对slug的查询。
当query_pk_and_slug
为get_object()
时,True
将使用主键和slug执行查找。
get_queryset T0>()¶ T1>
返回用来获取本视图显示对象的queryset。 默认的,如果设置了queryset
属性,get_queryset()
返回它的值,否则该方法构造一个QuerySet
通过调用model
属性的默认管理器的all()
方法。
get_context_object_name T0>( OBJ T1>)¶ T2>
返回视图用来操作的上下文对象的名称。 如果context_object_name
没有被设置,上下文对象的名字将被设置为构成queryset的模型的model_name
。 比如,'article'
模型的上下文对象名字是Article
。
get_context_data T0>( ** kwargs T1>)¶ T2>
返回显示对象的上下文数据。
该方法的基本实现要求视图中设置self.object
属性(即使None
)。 如果在使用这个mixin的时候请确认没有其他的内建视图也执行了该方法。
它返回一个包含这些内容的字典:
object
:该视图显示的对象(self.object
)。context_object_name
:self.object
也将以get_context_object_name()
返回的名称存储,该名称默认为型号名称的较低版本。上下文变量覆盖模板上下文处理器的值
来自get_context_data()
的任何变量优先于来自context processors的上下文变量。 For example, if your view
sets the model
attribute to
User
, the default context
object name of user
would override the user
variable from
the django.contrib.auth.context_processors.auth()
context
processor. 使用get_context_object_name()
来避免冲突。
get_slug_field T0>()¶ T1>
返回要用于通过slug查找的slug字段的名称。 默认情况下,这简单地返回slug_field
的值。
SingleObjectTemplateResponseMixin
¶django.views.generic.detail。
SingleObjectTemplateResponseMixin T0> ¶ T1>
一个mixin类,对单个对象实例操作的视图执行基于模板的响应呈现。 需要与其混合的视图提供self.object
,视图操作的对象实例。 self.object
通常是,但不一定是,Django模型的一个实例。 如果视图正在构建新实例的过程中,则可以是None
。
扩展
方法和属性
template_name_field T0> ¶ T1>
当前对象实例上的字段,可用于确定候选模板的名称。 如果当前对象实例上的template_name_field
本身或template_name_field
的值为None
,对象将不会用于候选模板名称。
template_name_suffix T0> ¶ T1>
附加到自动生成的候选模板名称的后缀。
默认后缀为_detail
。
get_template_names T0>()¶ T1>
返回候选模板名称的列表。 返回以下列表:
template_name
值(如果提供)template_name_field
字段的内容(如果可用)<app_label>/<model_name><template_name_suffix>.html
2017年9月6日