单对象混入¶
SingleObjectMixin¶
- 
class django.views.generic.detail.SingleObjectMixin¶
- 提供一个查找与当前 HTTP 请求相关联的对象的机制。 - **方法和属性* - 
model¶
- 该视图将显示数据的模型。指定 - model = Foo实际上等于指定- queryset = Foo.objects.all(),其中- objects代表 ``Foo``的 默认管理器。
 - 
queryset¶
- 代表对象的 - QuerySet。如果提供,- queryset的值将取代为- model提供的值。- 警告 - queryset是一个类属性,它的值是 可变的,所以直接使用它时一定要注意。在使用它之前,要么调用它的- all()方法,要么用- get_queryset()检索它,它在幕后负责克隆。
 - 
slug_field¶
- 模型上包含 slug 的字段名称。默认情况下, - slug_field是- 'slug'。
 - 
slug_url_kwarg¶
- 包含 slug 的 URLConf 关键字参数的名称。默认情况下, - slug_url_kwarg是- 'slug'。
 - 
pk_url_kwarg¶
- 包含主键的 URLConf 关键字参数的名称,默认情况下, - pk_url_kwarg是- 'pk'。
 - 
context_object_name¶
- 指定在上下文中使用的变量名称。 
 - 
query_pk_and_slug¶
- 如果 - True,使- get_object()使用主键和 slug 进行查找。默认值为- False。- 这个属性可以帮助减轻 不安全的直接对象引用 攻击。当应用程序允许通过顺序主键访问单个对象时,攻击者可以粗暴地强行猜测所有 URL,从而获得应用程序中所有对象的列表。如果应该阻止访问单个对象的用户获得这个列表,将 - query_pk_and_slug设置为- True将有助于防止URL的猜测,因为每个 URL 需要两个正确的、非顺序的参数。使用唯一的 slug 可以达到同样的目的,但是这个方案允许你使用非唯一的 slug。
 - 
get_object(queryset=None)¶
- 返回该视图要显示的单个对象。如果提供了 - queryset,将使用该查询集作为对象的来源;否则,将使用- get_queryset()。- get_object()在视图的参数中寻找一个- pk_url_kwarg参数;如果找到这个参数,这个方法就使用这个值执行基于主键的查找。如果没有找到这个参数,则查找- slug_url_kwarg参数,并使用 :attr:`slug_field `执行 slug 查找。- 当 - query_pk_and_slug为- True时,- get_object()将使用主键和 slug 进行查找。
 - 
get_queryset()¶
- 返回用于检索该视图将显示的对象的查询集。默认情况下, - get_queryset()返回- queryset属性的值,如果它被设置,否则它通过调用- model属性的默认管理器上的- all()方法来构造一个- querySet。
 - 
get_context_object_name(obj)¶
- 返回上下文变量名,该变量将用于包含该视图正在操作的数据。如果 - context_object_name没有被设置,上下文名称将由查询集组成的模型的- model_name构建。例如,模型- Article的上下文对象将命名为- 'article'。
 - 
get_context_data(**kwargs)¶
- 返回用于显示对象的上下文数据。 - 该方法的基本实现要求视图设置 - self.object属性(即使- None)。如果你在使用这个混入时没有使用内置视图,请务必这样做。- 它返回一个包含这些内容的字典: - object:该视图显示的对象(- self.object)。
- context_object_name:- self.object也将存储在- get_context_object_name()返回的名称下,默认为模型名称的小写版本。
 - 上下文变量覆盖了模板上下文处理程序的值 - 任何来自 - get_context_data()的变量都优先于来自 上下文处理器 的上下文变量。例如,如果你的视图将- model属性设置为- User,那么默认的上下文对象名- user将覆盖- django.contrib.auth.context_processors.auth()上下文处理器中的- user变量。使用- get_context_object_name()来避免冲突。
 - 
get_slug_field()¶
- 返回一个 slug 字段的名称,用于通过 slug 查找。默认情况下,返回 - slug_field的值。
 
- 
SingleObjectTemplateResponseMixin¶
- 
class django.views.generic.detail.SingleObjectTemplateResponseMixin¶
- 一个混入类,为对单个对象实例进行操作的视图执行基于模板的响应渲染。要求与之混合的视图提供 - self.object,即该视图操作的对象实例。- self.object通常是,但不要求是 Django 模型的实例。如果视图正在构建一个新的实例,它可能是- None。- 扩展 - **方法和属性* - 
template_name_field¶
- 当前对象实例上的字段,可用于确定候选模板的名称。如果 - template_name_field本身或当前对象实例上的- template_name_field的值为- None,则该对象不会被用于候选模板名称。
 - 
template_name_suffix¶
- 自动生成的候选模板名称的后缀。默认后缀是 - _detail。
 - 
get_template_names()¶
- 返回候选模板名称的列表。返回以下列表: - 视图中 template_name的值(如果提供)
- 视图操作的对象实例上的 template_name_field字段的内容(如果有的话)。
- <app_label>/<model_name><template_name_suffix>.html
 
- 视图中 
 
- 
 
          