Ошибки пагинации EmptyPage и PageNotAnInteger в Django
Вызов paginator.page(...)
может выбросить
PageNotAnInteger, если
номер не число, и
EmptyPage, если страницы
с таким номером нет.
from django.core.paginator import (
Paginator,
EmptyPage,
PageNotAnInteger,
)
page_number = request.GET.get('page')
try:
page_obj = paginator.page(page_number)
except PageNotAnInteger:
page_obj = paginator.page(1)
except EmptyPage:
page_obj = paginator.page(
paginator.num_pages
)
Есть и paginator.get_page -
он сам подставляет первую или
последнюю страницу при ошибке.
Разберем ручную обработку, чтобы
понять исключения.
Обработайте PageNotAnInteger
и EmptyPage в списке
работников.
Замените разбор на
paginator.get_page
и сравните поведение.