num_pages

Атрибут num_pages класса Paginator возвращает общее количество страниц, на которые разбит набор объектов. Это значение вычисляется на основе общего количества объектов и размера страницы. Атрибут доступен только для чтения и полезен для отображения информации о пагинации в шаблонах или представлениях.

Синтаксис

pythonpaginator.num_pages

Пример

Получим общее количество страниц для набора из 25 объектов с размером страницы 10:

pythonfrom django.core.paginator import Paginator

# Создаем список из 25 объектов
items = list(range(1, 26))
paginator = Paginator(items, 10)

total_pages = paginator.num_pages
print(f"Total pages: {total_pages}")

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

python"Total pages: 3"

Пример

Используем атрибут num_pages в представлении для передачи количества страниц в шаблон:

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

def article_list(request):
  articles = Article.objects.all()
  paginator = Paginator(articles, 5)
  total_pages = paginator.num_pages

  return render(request, 'articles.html', {
    'total_pages': total_pages,
  })

Пример

Проверим, сколько страниц будет при пустом наборе объектов:

pythonfrom django.core.paginator import Paginator

empty_list = []
paginator = Paginator(empty_list, 10)

total_pages = paginator.num_pages
print(f"Pages for empty list: {total_pages}")

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

python"Pages for empty list: 1"

Пример

Сравним количество страниц для разного размера страницы:

pythonfrom django.core.paginator import Paginator

items = list(range(1, 101))

paginator_10 = Paginator(items, 10)
paginator_20 = Paginator(items, 20)
paginator_50 = Paginator(items, 50)

print(f"10 items per page: {paginator_10.num_pages}")
print(f"20 items per page: {paginator_20.num_pages}")
print(f"50 items per page: {paginator_50.num_pages}")

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

python"10 items per page: 10"
"20 items per page: 5"
"50 items per page: 2"

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

  • класс Paginator,
    который создает объект для разбивки данных на страницы
  • атрибут count,
    который возвращает общее количество объектов в пагинаторе
  • атрибут page_range,
    который возвращает диапазон номеров страниц
  • метод page,
    который возвращает объект страницы по ее номеру