Смешивание нескольких объектов¶
MultipleObjectMixin¶
-
class
django.views.generic.list.MultipleObjectMixin¶ Миксин, который можно использовать для отображения списка объектов.
Если указано
paginate_by, Django будет постранично перемещать возвращаемые результаты. Вы можете указать номер страницы в URL одним из двух способов:Используйте параметр
pageв URLconf. Например, вот как может выглядеть ваш URLconf:path("objects/page<int:page>/", PaginatedView.as_view()),
Передайте номер страницы через параметр
pagequery-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
- значение
-