Метод has_other_pages

Метод has_other_pages применяется к объекту страницы Page и возвращает булево значение. Метод полезен для проверки, есть ли у текущей страницы другие страницы в общем списке, что помогает определить, нужно ли отображать элементы пагинации (например, кнопки "Предыдущая" и "Следующая") в шаблоне.

Синтаксис

pythonpage.has_other_pages()

Пример

Давайте проверим, есть ли другие страницы у текущей страницы пагинации:

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

# Создаем список объектов
articles = Article.objects.all()

# Создаем пагинатор с 10 объектами на страницу
paginator = Paginator(articles, 10)

# Получаем первую страницу
page = paginator.page(1)

# Проверяем наличие других страниц
res = page.has_other_pages()
print(res)

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

python"True"

Пример

Проверим наличие других страниц у последней страницы пагинации:

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

# Создаем список объектов
articles = Article.objects.all()

# Создаем пагинатор с 10 объектами на страницу
paginator = Paginator(articles, 10)

# Получаем последнюю страницу
last_page = paginator.page(paginator.num_pages)

# Проверяем наличие других страниц
res = last_page.has_other_pages()
print(res)

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

python"False"

Пример

Используем метод has_other_pages в шаблоне для условного отображения навигации:

django-html{% if page.has_other_pages %}
  <div class="pagination">
    {% if page.has_previous %}
      <a href="?page={{ page.previous_page_number }}">« Предыдущая</a>
    {% endif %}
    
    <span>Страница {{ page.number }} из {{ page.paginator.num_pages }}</span>
    
    {% if page.has_next %}
      <a href="?page={{ page.next_page_number }}">Следующая »</a>
    {% endif %}
  </div>
{% else %}
  <span>Нет других страниц</span>
{% endif %}

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

  • метод has_next,
    который проверяет наличие следующей страницы
  • метод has_previous,
    который проверяет наличие предыдущей страницы
  • метод next_page_number,
    который возвращает номер следующей страницы
  • метод previous_page_number,
    который возвращает номер предыдущей страницы