Атрибут page_range

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

Синтаксис

pythonpaginator.page_range

Пример

Давайте создадим пагинатор для списка статей и выведем диапазон страниц:

pythonfrom 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 page range
res = paginator.page_range
print(res)

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

pythonrange(1, 6)

Пример

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

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

def article_list(request):
  articles = Article.objects.all()
  paginator = Paginator(articles, 5)
  
  # Get current page number from request
  page_number = request.GET.get('page', 1)
  page_obj = paginator.get_page(page_number)
  
  # Get page range for navigation
  page_range = paginator.page_range
  
  context = {
    'page_obj': page_obj,
    'page_range': page_range,
  }
  
  return render(request, 'articles/list.html', context)

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

python"Page range object: range(1, 11)"

Пример

Давайте используем диапазон страниц для проверки количества страниц и итерации:

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

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

# Get page range
page_range = paginator.page_range

# Check if range is iterable
if page_range:
  print(f"Total pages: {len(page_range)}")
  
  # Iterate through page numbers
  for page_num in page_range:
    print(f"Page {page_num} is available")

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

python"Total pages: 4"
"Page 1 is available"
"Page 2 is available"
"Page 3 is available"
"Page 4 is available"

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

  • атрибут num_pages,
    который возвращает общее количество страниц
  • атрибут count,
    который возвращает общее количество объектов
  • метод page,
    который возвращает объект страницы по номеру
  • метод get_elided_page_range,
    который возвращает сокращенный диапазон страниц