Spec-Zone.ru › Django 6.0

Примеси нескольких объектов

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.

Расширяет

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

Получает список элементов для этого представления. Это должен быть итерируемый объект; им может быть 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, но это необязательно.

Расширяет

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

Spec-Zone.ru

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