Пагинация¶
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>
Paginator¶
- class
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
- если обращение к несуществующей странице
Page¶
- class
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
()¶ Возвращает индекс первой страницы
-
InvalidPage¶
- class
django.core.paginator.
InvalidPage
¶ Исключение возникает, если номер задан некорректно
PageNotAnInteger¶
- class
django.core.paginator.
PageNotAnInteger
¶ Исключение возникает, если номер задан некорректно
Наследник
django.core.paginator.InvalidPage
EmptyPage¶
- class
django.core.paginator.
EmptyPage
¶ Исключение возникает, если обращение к несуществующей странице
Наследник
django.core.paginator.InvalidPage