Django 5 для начинающих

Прогресс по курсу:  9/1004

8.6 Пагинация
3 из 3 шагов пройдено

Элементы управления пагинацией HTML

По умолчанию использование классов пагинации приводит к отображению элементов управления пагинацией HTML в просматриваемом API.

Существует два встроенных стиля отображения:

Классы PageNumberPagination и LimitOffsetPagination отображают список номеров страниц с предыдущим и следующим элементами управления.

Класс CursorPagination отображает более простой стиль, в котором отображаются только предыдущий и следующий элементы управления.

Настройка элементов управления

Вы можете переопределить шаблоны, которые отображают элементы управления пагинацией HTML. Есть два встроенных стиля:

  • rest_framework/pagination/numbers.html

  • rest_framework/pagination/previous_and_next.html

Предоставление шаблона с любым из этих путей в глобальном каталоге шаблонов переопределит рендеринг по умолчанию для соответствующих классов пагинации.

В качестве альтернативы вы можете полностью отключить элементы управления HTML-пагинацией, создав подкласс одного из существующих классов и установив template = None в качестве атрибута класса.

Затем вам нужно будет настроить ключ параметров DEFAULT_PAGINATION_CLASS, чтобы использовать ваш пользовательский класс в качестве стиля пагинации по умолчанию.

Низкоуровневый API

Низкоуровневый API для определения того, должен ли класс пагинации отображать элементы управления или нет, раскрывается как атрибут display_page_controls на экземпляре пагинации.

Пользовательские классы пагинации должны быть установлены в True в методе paginate_queryset, если они требуют отображения элементов управления пагинацией HTML.

Методы .to_html() и .get_html_context() также могут быть переопределены в пользовательском классе пагинации для дальнейшей настройки отображения элементов управления.

 

Пакеты сторонних производителей

Также доступны следующие пакеты сторонних производителей.

DRF-extensions

Пакет DRF-extensions включает класс-миксин PaginateByMaxMixin, который позволяет вашим клиентам API указывать ?page_size=max для получения максимально допустимого размера страницы.

drf-proxy-pagination

Пакет drf-proxy-pagination включает класс ProxyPagination, который позволяет выбирать класс пагинации с помощью параметра запроса.

link-header-pagination

Пакет django-rest-framework-link-header-pagination включает класс LinkHeaderPagination, который обеспечивает пагинацию через HTTP-заголовок Link, как описано в документации GitHub REST API.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.