多对象混入¶
MultipleObjectMixin
¶
-
class
django.views.generic.list.
MultipleObjectMixin
¶ 一个可以用来显示对象列表的混入。
如果指定了
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
。
-
model
¶ 该视图将显示数据的模型。指定
model = Foo
实际上等于指定queryset = Foo.objects.all()
,其中objects
代表 ``Foo``的 默认管理器。
-
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 中指定的 kwarg 变量。默认为page
。
-
paginator_class
¶ 用于分页的 paginator 类。默认情况下,使用
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
) 的四元元组。通过将
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
- 视图中
-