Примеси нескольких объектов
MultipleObjectMixin
-
class django.views.generic.list.MultipleObjectMixin -
Примесь, которую можно использовать для отображения списка объектов.
Если указано
paginate_by, Django разобьёт возвращённые этим представлением результаты на страницы. Номер страницы можно указать в URL одним из двух способов:-
Используйте параметр
pageв URLconf. Например, ваш URLconf может выглядеть так:path("objects/page<int:page>/", PaginatedView.as_view()), -
Передайте номер страницы с помощью параметра строки запроса
page. Например, URL будет выглядеть так:/objects/?page=3
Эти значения и списки нумеруются с 1, а не с 0, поэтому первая страница будет обозначаться как страница
1.Подробнее о разбиении на страницы читайте в документации по разбиению на страницы.
В качестве особого случая в качестве значения для
pageтакже разрешено использоватьlast:/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) или переменную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() -
Получает список элементов для этого представления. Это должен быть итерируемый объект; им может быть QuerySet (в этом случае будут доступны специфичные для 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— это QuerySet объектов Django иcontext_object_nameне задано, именем контекста будетmodel_nameмодели, из которой состоит QuerySet, с добавленным суффиксом'_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
- значение
-
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/class-based-views/mixins-multiple-object/