• 3.2
  • 5.0
  • 6.1
  • Версия документации: 3.1

Несколько миксинов объектов

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 page query-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 last as a value for page:

/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

Back to Top