Spec-Zone.ru › Django 5.1

Множественные миксины объектов

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.

Подробнее о постраничном выводе читайте в документации по постраничному выводу.

В качестве специального случая, вы также можете использовать last в качестве значения для page:

/objects/?page=last

Это позволяет вам получить доступ к последней странице результатов, не зная предварительно, сколько страниц существует.

Обратите внимание, что page обязательно должно быть либо корректным номером страницы, либо значением last; любое другое значение для page приведет к ошибке 404.

Расширяет

  • django.views.generic.base.ContextMixin

Методы и атрибуты

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()

Получение списка элементов для данного представления. Это должен быть итерируемый объект, который может быть набором запросов (в котором будет включено поведение, специфичное для набора запросов).

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 не задан, имя контекстной переменной будет именем модели, из которой составлен набор запросов, с добавленным постфиксом '_list' . Например, модель Article будет иметь контекстную переменную, названную article_list.

get_context_data(**kwargs)

Возвращает данные контекста для отображения списка объектов.

Контекст

END_OF_DOCUMENT_MARKER ```
  • 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.

Расширяет

  • TemplateResponseMixin

Методы и атрибуты

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/5.1/ref/class-based-views/mixins-multiple-object/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API