Spec-Zone.ru › Django 1.9

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

MultipleObjectMixin

class django.views.generic.list.MultipleObjectMixin

Миксин, который можно использовать для отображения списка объектов.

Если paginate_by указано, Django будет странировать результаты, возвращаемые этим миксином. Вы можете указать номер страницы в URL двумя способами:

  • Используйте параметр page в URLconf. Например, ваш URLconf может выглядеть так:

    url(r'^objects/page(?P<page>[0-9]+)/$', 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 не задано, имя контекста будет именем model_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

Mixin-класс, обеспечивающий отображение ответа на основе шаблона для представлений, работающих со списком экземпляров объектов. Требует, чтобы представление, к которому он применён, предоставляло 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/1.9/ref/class-based-views/mixins-multiple-object/

Spec-Zone.ru

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