Класс Page
Класс Page используется для работы с отдельной страницей
результатов пагинации. Объект этого класса содержит список объектов
(например, записей из базы данных) для текущей страницы и предоставляет
методы для проверки наличия соседних страниц, получения их номеров,
а также для определения индексов элементов на странице.
Объект Page создается автоматически при вызове метода
Paginator/method/page/"⁆page у экземпляра класса Paginator.
Синтаксис
from django.core.paginator import Paginator
paginator = Paginator(object_list, per_page)
page_obj = paginator.page(number)
Пример
Рассмотрим базовый пример получения объекта страницы и доступа к его элементам:
from 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)
Результат выполнения кода:
"Article 11"
"Article 12"
"Article 13"
"Article 14"
"Article 15"
Пример
Используем методы has_next и has_previous для проверки наличия соседних страниц:
from 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")
Результат выполнения кода:
"Previous page: 2"
"Next page: 4"
"There are other pages"
Пример
Определим индексы первого и последнего элемента на текущей странице с помощью методов start_index и end_index:
from 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()}")
Результат выполнения кода:
"Start index: 11"
"End index: 20"
Смотрите также
-
класс
Paginator,
который создает объект пагинации -
метод
page,
который возвращает объект страницы по ее номеру -
атрибут
object_list,
который содержит список элементов на странице -
метод
has_other_pages,
который проверяет наличие других страниц, кроме текущей