Элементы управления пагинацией 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.