Несколько миксинов объектов¶
MultipleObjectMixin¶
- class django.views.generic.list.MultipleObjectMixin¶
Миксин, который можно использовать для отображения списка объектов.
Если указан
paginate_by, Django будет разбивать на страницы результаты, возвращаемые этим. Указать номер страницы в URL-адресе можно одним из двух способов:Используйте параметр
pageв URLconf. Например, вот как может выглядеть ваш URLconf:path('objects/page<int:page>/', PaginatedView.as_view()),
Pass the page number via the
pagequery-string parameter. For example, a URL would look like this:/objects/?page=3
Эти значения и списки отсчитываются от 1, а не от 0, поэтому первая страница будет представлена как страница
1.Дополнительную информацию о нумерации страниц можно найти в документации по нумерации страниц.
As a special case, you are also permitted to use
lastas a value forpage:/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¶
Строка или список строк, определяющих порядок применения к набору запросов. Допустимые значения такие же, как для
order_by().
- paginate_by¶
Целое число, указывающее, сколько объектов должно отображаться на странице. Если это задано, представление будет разбивать объекты на страницы с помощью объектов paginate_by на каждой странице. Представление будет ожидать либо параметр строки запроса
page(черезrequest.GET), либо переменнуюpage, указанную в URLconf.
- paginate_orphans¶
Целое число, указывающее количество объектов «переполнения», которые может содержать последняя страница. Это расширяет ограничение
paginate_byна последней странице доpaginate_orphans, чтобы на последней странице не было очень небольшого количества объектов.
- page_kwarg¶
Строка, определяющая имя, которое будет использоваться для параметра страницы. Представление будет ожидать, что этот параметр будет доступен либо как параметр строки запроса (через request.GET), либо как переменная kwarg, указанная в URLconf. По умолчанию — «страница».
- paginator_class¶
Класс paginator, который будет использоваться для нумерации страниц. По умолчанию используется
django.core.paginator.Paginator. Если пользовательский класс разбиения на страницы не имеет того же интерфейса конструктора, что иdjango.core.paginator.Paginator, вам также потребуется предоставить реализацию дляget_paginator().
- context_object_name¶
Задает имя переменной для использования в текущем контексте.
- get_queryset()¶
Получите список элементов для этого представления. Это должен быть итерируемый объект и может быть набором запросов (в котором будет включено поведение, специфичное для набора запросов).
- get_ordering()¶
Возвращает строку (или итерацию строк), определяющую порядок, который будет применен к набору запросов.
По умолчанию возвращает
ordering.
- paginate_queryset(queryset, page_size)¶
Возвращает кортеж из четырех элементов, содержащий (
paginator,page,object_list,is_paginated).Создается путем разбиения
querysetна страницы размеромpage_size. Если запрос содержит аргумент «страница», либо в виде аргумента захваченного 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_list».
- get_context_data(**kwargs)¶
Возвращает контекстные данные для отображения списка объектов.
Контекст(Context)
object_list: список объектов, отображаемых в этом представлении. Если указаноcontext_object_name, эта переменная также будет установлена в контексте с тем же значением, что иobject_list.is_paginated: логическое значение, указывающее, разбиты ли результаты на страницы. В частности, для этого параметра установлено значение «False», если размер страницы не указан или если доступные объекты не занимают несколько страниц.paginator: экземплярdjango.core.paginator.Paginator. Если страница не разбита на страницы, эта контекстная переменная будет иметь значение «Нет».page_obj: Экземплярdjango.core.paginator.Page. Если страница не разбита на страницы, эта контекстная переменная будет иметь значение «Нет».
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