多个对象 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