多个对象 mixin¶
MultipleObjectMixin
¶
- class django.views.generic.list.MultipleObjectMixin¶
一个可以用来显示对象列表的 mixin。
如果指定了
paginate_by
,Django 将对返回的结果进行分页。您可以通过两种方式之一在 URL 中指定页码在 URLconf 中使用
page
参数。例如,您的 URLconf 可能如下所示path("objects/page<int:page>/", PaginatedView.as_view()),
通过
page
查询字符串参数传递页码。例如,URL 将如下所示/objects/?page=3
这些值和列表都是从 1 开始的,而不是从 0 开始的,因此第一页将表示为页面
1
。有关分页的更多信息,请阅读 分页文档。
作为特殊情况,您还可以使用
last
作为page
的值/objects/?page=last
这允许您访问结果的最后一页,而无需首先确定有多少页。
请注意,
page
必须是有效的页码或值last
;page
的任何其他值都将导致 404 错误。继承自
方法和属性
- allow_empty¶
一个布尔值,指定如果没有可用对象是否显示页面。如果该值为
False
且没有可用对象,则视图将引发 404 而不是显示空页面。默认情况下,该值为True
。
- queryset¶
一个表示对象的
QuerySet
。如果提供,queryset
的值将取代为model
提供的值。警告
queryset
是一个具有可变值的类属性,因此在直接使用它时必须小心。在使用它之前,要么调用它的all()
方法,要么使用get_queryset()
获取它,后者会处理幕后的克隆操作。
- ordering¶
一个字符串或字符串列表,指定要应用于
queryset
的排序。有效值与order_by()
的值相同。
- paginate_by¶
一个整数,指定每页应显示多少个对象。如果给出此值,视图将使用每页
paginate_by
个对象对对象进行分页。视图将期望page
查询字符串参数(通过request.GET
)或在 URLconf 中指定的page
变量。
- paginate_orphans¶
一个整数,指定最后一页可以包含的“溢出”对象的数目。这将
paginate_by
对最后一页的限制最多扩展到paginate_orphans
,以避免最后一页只有很少的对象。
- page_kwarg¶
一个字符串,指定用于页面参数的名称。视图将期望此参数作为查询字符串参数(通过
request.GET
)或在 URLconf 中指定的关键字参数变量可用。默认为page
。
- paginator_class¶
用于分页的分页器类。默认情况下,使用
django.core.paginator.Paginator
。如果自定义分页器类没有与django.core.paginator.Paginator
相同的构造函数接口,您还需要为get_paginator()
提供实现。
- context_object_name¶
指定要在上下文中使用的变量的名称。
- get_queryset()¶
获取此视图的项目列表。这必须是一个可迭代对象,并且可以是查询集(在这种情况下将启用特定于查询集的行为)。
- paginate_queryset(queryset, page_size)¶
返回一个包含 (
paginator
,page
,object_list
,is_paginated
) 的 4 元组。通过将
queryset
分页成大小为page_size
的页面来构建。如果请求包含page
参数(作为捕获的 URL 参数或 GET 参数),则object_list
将对应于该页面中的对象。
- get_paginate_by(queryset)¶
返回要分页的项目数量,或者如果不需要分页则返回
None
。默认情况下,此方法返回paginate_by
的值。
- get_paginator(queryset, per_page, orphans=0, allow_empty_first_page=True)¶
返回此视图要使用的分页器的实例。默认情况下,会实例化
paginator_class
的实例。
- get_paginate_orphans()¶
一个整数,指定最后一页可以包含的“溢出”对象的数量。默认情况下,此方法返回
paginate_orphans
的值。
- get_allow_empty()¶
返回一个布尔值,指定如果对象不可用是否显示页面。如果此方法返回
False
且对象不可用,则视图将引发 404 错误而不是显示空页面。默认情况下,此值为True
。
- get_context_object_name(object_list)¶
返回用于包含此视图正在操作的数据列表的上下文变量名称。如果
object_list
是 Django 对象的查询集,并且context_object_name
未设置,则上下文名称将为构成查询集的模型的model_name
,并在后面追加'_list'
。例如,模型Article
将具有名为article_list
的上下文对象。
- get_context_data(**kwargs)¶
返回用于显示对象列表的上下文数据。
上下文
object_list
:此视图正在显示的对象列表。如果指定了context_object_name
,则该变量也将设置在上下文中,其值与object_list
相同。is_paginated
:一个布尔值,表示结果是否已分页。具体来说,如果未指定页面大小,或者可用对象不跨越多个页面,则将其设置为False
。paginator
:django.core.paginator.Paginator
的实例。如果页面未分页,则此上下文变量将为None
。page_obj
:django.core.paginator.Page
的实例。如果页面未分页,则此上下文变量将为None
。
MultipleObjectTemplateResponseMixin
¶
- class django.views.generic.list.MultipleObjectTemplateResponseMixin¶
一个混合类,用于执行对对象实例列表进行操作的视图的基于模板的响应渲染。要求与其混合的视图提供
self.object_list
,即视图正在操作的对象实例列表。self.object_list
可以是,但不一定是QuerySet
。继承自
方法和属性
- template_name_suffix¶
要附加到自动生成的候选模板名称的后缀。默认后缀为
_list
。
- get_template_names()¶
返回候选模板名称列表。返回以下列表
视图上的
template_name
值(如果提供)<app_label>/<model_name><template_name_suffix>.html