Класс Page

Класс Page используется для работы с отдельной страницей результатов пагинации. Объект этого класса содержит список объектов (например, записей из базы данных) для текущей страницы и предоставляет методы для проверки наличия соседних страниц, получения их номеров, а также для определения индексов элементов на странице. Объект Page создается автоматически при вызове метода Paginator/method/page/"⁆page у экземпляра класса Paginator.

Синтаксис

pythonfrom django.core.paginator import Paginator

paginator = Paginator(object_list, per_page)
page_obj = paginator.page(number)

Пример

Рассмотрим базовый пример получения объекта страницы и доступа к его элементам:

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

# All articles
articles = Article.objects.all().order_by('id')

# Create paginator: 10 articles per page
paginator = Paginator(articles, 10)

# Get second page
page_obj = paginator.page(2)

# Access page items
for article in page_obj.object_list:
  print(article.title)

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

python"Article 11"
"Article 12"
"Article 13"
"Article 14"
"Article 15"

Пример

Используем методы has_next и has_previous для проверки наличия соседних страниц:

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

articles = Article.objects.all()
paginator = Paginator(articles, 5)
page_obj = paginator.page(3)

if page_obj.has_previous():
  print(f"Previous page: {page_obj.previous_page_number()}")

if page_obj.has_next():
  print(f"Next page: {page_obj.next_page_number()}")

if page_obj.has_other_pages():
  print("There are other pages")

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

python"Previous page: 2"
"Next page: 4"
"There are other pages"

Пример

Определим индексы первого и последнего элемента на текущей странице с помощью методов start_index и end_index:

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

articles = Article.objects.all().order_by('id')
paginator = Paginator(articles, 10)
page_obj = paginator.page(2)

print(f"Start index: {page_obj.start_index()}")
print(f"End index: {page_obj.end_index()}")

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

python"Start index: 11"
"End index: 20"

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

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