多个对象 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 必须是有效的页码或值 lastpage 的任何其他值都将导致 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 中指定的关键字参数变量可用。默认为 page

paginator_class

用于分页的分页器类。默认情况下,使用 django.core.paginator.Paginator。如果自定义分页器类没有与 django.core.paginator.Paginator 相同的构造函数接口,您还需要为 get_paginator() 提供实现。

context_object_name

指定要在上下文中使用的变量的名称。

get_queryset()

获取此视图的项目列表。这必须是一个可迭代对象,并且可以是查询集(在这种情况下将启用特定于查询集的行为)。

get_ordering()

返回一个字符串(或字符串的可迭代对象),该字符串定义将应用于 queryset 的排序。

默认情况下返回 ordering

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

  • paginatordjango.core.paginator.Paginator 的实例。如果页面未分页,则此上下文变量将为 None

  • page_objdjango.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

返回顶部