Метод next_page_number

Метод next_page_number применяется к объекту Page и возвращает номер следующей страницы. Если текущая страница является последней, то метод вызывает исключение EmptyPage. Этот метод часто используется для построения навигации по страницам и создания ссылок на следующую страницу. Метод не принимает никаких аргументов и всегда возвращает целое число.

Синтаксис

pythonpage.next_page_number()

Пример

Давайте получим номер следующей страницы для объекта Page:

pythonfrom django.core.paginator import Paginator
from myapp.models import Article

# Prepare data
articles = Article.objects.all()
paginator = Paginator(articles, 10)

# Get current page
current_page = paginator.page(2)

# Get next page number
next_page = current_page.next_page_number()
print(next_page)

Результат выполнения кода:

python"3"

В этом примере текущая страница имеет номер 2, поэтому метод next_page_number возвращает число 3.

Пример

Давайте используем метод next_page_number для построения ссылки на следующую страницу в шаблоне:

pythonfrom django.core.paginator import Paginator
from myapp.models import Article

# Prepare data
articles = Article.objects.all()
paginator = Paginator(articles, 15)

# Get last page
last_page = paginator.page(paginator.num_pages)

try:
  next_num = last_page.next_page_number()
  print(f"Next page URL: /articles/?page={next_num}")
except EmptyPage:
  print("This is the last page")

Результат выполнения кода:

python"This is the last page"

В этом примере метод next_page_number выбрасывает исключение EmptyPage, потому что текущая страница является последней. Это демонстрирует, что метод следует использовать с обработкой исключений или предварительной проверкой через метод has_next.

Пример

Давайте создадим полную навигацию по страницам с использованием метода next_page_number вместе с другими методами навигации:

pythonfrom django.core.paginator import Paginator
from myapp.models import Article

# Prepare data
articles = Article.objects.all()
paginator = Paginator(articles, 20)

# Get current page
current_page = paginator.page(3)

# Build navigation
navigation = {
  'current': current_page.number,
  'first': 1,
  'last': paginator.num_pages,
}

if current_page.has_previous():
  navigation['prev'] = current_page.previous_page_number()
if current_page.has_next():
  navigation['next'] = current_page.next_page_number()

print(navigation)

Результат выполнения кода:

python"{'current': 3, 'first': 1, 'last': 5, 'prev': 2, 'next': 4}"

В этом примере мы создаем словарь с полной навигационной информацией, используя методы has_previous и has_next для проверки доступности соседних страниц перед вызовом previous_page_number и next_page_number.

Смотрите также

  • метод previous_page_number,
    который возвращает номер предыдущей страницы
  • метод has_next,
    который проверяет наличие следующей страницы
  • метод has_previous,
    который проверяет наличие предыдущей страницы
  • метод page,
    который возвращает объект Page для указанного номера страницы