from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def post_list(request):
object_list = Post.objects.all()
# 3 сообщения на страницу
paginator = Paginator(object_list, 3)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(
request,
'posts.html',
{
'page': page,
'posts': posts,
},
)
<div class="pagination">
<span class="step-links">
{% if page.has_previous %}
<a href="?page={{ page.previous_page_number }}">Previous</a>
{% endif %}
<span class="current">
Page {{ page.number }} of {{ page.paginator.num_pages }}.
</span>
{% if page.has_next %}
<a href="?page={{ page.next_page_number }}">Next</a>
{% endif %}
</span>
</div>
django.core.paginator.
Paginator
orphans - минимальное количество позиции, допустимое на последней странице.
allow_empty_first_page - по умолчанию False, что вызовет исключение если список элементов пуст. Если True - ошибки не будет.
paginator = Paginator(queryset, 3)
count
Общее количесвто элементов в списке
num_pages
Общее количесвто страниц
page_range
Возвращает список, содержащий номера полученных страниц
paginator.page_range
# [1, 2, 3, ...]
page
(page_number)Возвращает объект django.core.paginator.Page
,
указанную страницу из списка.
Возбуждает исключения:
django.core.paginator.InvalidPage
- если номер задан некорректно
django.core.paginator.PageNotAnInteger
- если номер задан некорректно
django.core.paginator.EmptyPage
- если обращение к несуществующей странице
django.core.paginator.
Page
Объект, представляет страницу из пагинации
number
Номер текущей страницы
paginator
Возвращает django.core.paginator.Paginator
,
которым была создана данная страница
end_index
()Возвращает номер последней позиции
has_next
()Возвращает булево, это не последняя страница
has_other_pages
()Возвращает булево, это не единственная страница
has_previous
()Возвращает булево, это не первая страница
next_page_number
()Возвращает номер следующей страницы
Возбуждает исключение django.core.paginator.InvalidPage
если это последняя страница
previous_page_number
()Возвращает номер предыдущей страницы
Возбуждает исключение django.core.paginator.InvalidPage
если это первая страница
start_index
()Возвращает индекс первой страницы
django.core.paginator.
InvalidPage
Исключение возникает, если номер задан некорректно
django.core.paginator.
PageNotAnInteger
Исключение возникает, если номер задан некорректно
Наследник django.core.paginator.InvalidPage
django.core.paginator.
EmptyPage
Исключение возникает, если обращение к несуществующей странице
Наследник django.core.paginator.InvalidPage