Смешивание нескольких объектов¶
MultipleObjectMixin
¶
-
class
django.views.generic.list.
MultipleObjectMixin
¶ Миксин, который можно использовать для отображения списка объектов.
Если указано
paginate_by
, Django будет постранично перемещать возвращаемые результаты. Вы можете указать номер страницы в URL одним из двух способов:Используйте параметр
page
в URLconf. Например, вот как может выглядеть ваш URLconf:path("objects/page<int:page>/", PaginatedView.as_view()),
Передайте номер страницы через параметр
page
query-string. Например, URL будет выглядеть следующим образом:/objects/?page=3
Эти значения и списки основаны на 1, а не на 0, поэтому первая страница будет представлена как страница
1
.Подробнее о пагинации читайте в pagination documentation.
В качестве особого случая разрешается также использовать
last
в качестве значения дляpage
:/objects/?page=last
Это позволяет получить доступ к последней странице результатов без необходимости предварительно определять количество страниц.
Обратите внимание, что
page
должен быть либо действительным номером страницы, либо значениемlast
; любое другое значение дляpage
приведет к ошибке 404.Расширяется
Методы и атрибуты
-
allow_empty
¶ Булево значение, указывающее, отображать ли страницу, если нет доступных объектов. Если это значение равно
False
и ни один объект не доступен, представление выдаст ошибку 404 вместо отображения пустой страницы. По умолчанию это значениеTrue
.
-
model
¶ Модель, для которой это представление будет отображать данные. Указание
model = Foo
фактически то же самое, что и указаниеqueryset = Foo.objects.all()
, гдеobjects
означаетFoo
“default manager.
-
queryset
¶ QuerySet
, который представляет объекты. Если предоставлено, значениеqueryset
заменяет значение, предоставленное дляmodel
.Предупреждение
queryset
- это атрибут класса с изменяемым значением, поэтому при его непосредственном использовании следует соблюдать осторожность. Прежде чем использовать его, либо вызовите его методall()
, либо получите его с помощьюget_queryset()
, который позаботится о клонировании за сценой.
-
ordering
¶ Строка или список строк, определяющих порядок следования для
queryset
. Допустимые значения те же, что и дляorder_by()
.
-
paginate_by
¶ Целое число, указывающее, сколько объектов должно быть отображено на странице. Если это значение задано, то представление будет постранично отображать объекты с
paginate_by
объектов на странице. Представление ожидает либо параметр строки запросаpage
(черезrequest.GET
), либо переменнуюpage
, указанную в URLconf.
-
paginate_orphans
¶ Целое число, определяющее количество объектов «переполнения», которые может содержать последняя страница. Это расширяет ограничение
paginate_by
для последней страницы наpaginate_orphans
, чтобы последняя страница не содержала очень маленькое количество объектов.
-
page_kwarg
¶ Строка, указывающая имя, которое следует использовать для параметра страницы. Представление ожидает, что этот параметр будет доступен либо как параметр строки запроса (через
request.GET
), либо как переменная kwarg, указанная в 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)¶ Возвращает 4-кортеж, содержащий (
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
- значение
-