Смешивание нескольких объектов

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 означает Foodefault 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
Вернуться на верх