РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
698 of 818 menu

Метод previous_page_number

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

Синтаксис

page.previous_page_number()

Пример

Рассмотрим базовый пример использования метода previous_page_number для получения номера предыдущей страницы:

from django.core.paginator import Paginator from myapp.models import Article # Get all articles articles = Article.objects.all() # Create paginator with 10 items per page paginator = Paginator(articles, 10) # Get the third page page = paginator.page(3) # Get the number of the previous page prev_page = page.previous_page_number() # Print the result print(prev_page)

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

"2"

Пример

Используем метод previous_page_number в шаблоне для построения навигации. Сначала подготовим данные в представлении:

from django.core.paginator import Paginator from django.shortcuts import render from myapp.models import Article def article_list(request): # Get all articles articles = Article.objects.all() # Create paginator with 5 items per page paginator = Paginator(articles, 5) # Get the current page number from GET parameters page_number = request.GET.get('page', 1) # Get the page object page = paginator.page(page_number) # Pass the page object to the template return render(request, 'articles/list.html', {'page': page})

Затем используем метод в шаблоне list.html для создания ссылки на предыдущую страницу:

{% if page.has_previous %} <a href="?page={{ page.previous_page_number }}">Previous</a> {% else %} <span>Previous</span> {% endif %} <span>Page {{ page.number }} of {{ page.paginator.num_pages }}</span> {% if page.has_next %} <a href="?page={{ page.next_page_number }}">Next</a> {% else %} <span>Next</span> {% endif %}

Пример

Важно обрабатывать ситуацию, когда текущая страница является первой. В этом случае метод previous_page_number выбрасывает исключение EmptyPage. Используйте метод has_previous для проверки перед вызовом:

from django.core.paginator import Paginator, EmptyPage from myapp.models import Article # Get all articles articles = Article.objects.all() # Create paginator with 10 items per page paginator = Paginator(articles, 10) try: # Try to get the first page page = paginator.page(1) # This will raise an EmptyPage exception # because the first page has no previous page prev_page = page.previous_page_number() print(prev_page) except EmptyPage: print("No previous page exists")

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

"No previous page exists"

Пример

Используем метод previous_page_number вместе с другими методами для построения полной навигации с информацией о соседних страницах:

from django.core.paginator import Paginator from myapp.models import Article # Get all articles articles = Article.objects.all() # Create paginator with 3 items per page paginator = Paginator(articles, 3) # Get the fifth page page = paginator.page(5) # Get information about the current page current = page.number total = page.paginator.num_pages # Get previous and next page numbers if page.has_previous(): prev = page.previous_page_number() else: prev = None if page.has_next(): next = page.next_page_number() else: next = None # Build navigation data navigation = { 'current': current, 'total': total, 'previous': prev, 'next': next, 'has_prev': page.has_previous(), 'has_next': page.has_next(), } print(navigation)

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

"{'current': 5, 'total': 10, 'previous': 4, 'next': 6, 'has_prev': True, 'has_next': True}"

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

  • метод has_previous,
    который проверяет наличие предыдущей страницы
  • метод next_page_number,
    который возвращает номер следующей страницы
  • метод number,
    который возвращает номер текущей страницы
  • метод has_other_pages,
    который проверяет наличие других страниц кроме текущей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить