Встречается на 1% собеседований по Python
Как устроена пагинация в Django
В Django пагинация реализуется через класс Paginator из модуля django.core.paginator. Основные шаги:
- Создаем объект
Paginator, передавая QuerySet и количество элементов на страницу:
python
from django.core.paginator import Paginator
queryset = MyModel.objects.all()
paginator = Paginator(queryset, 25) # 25 элементов на страницу- Получаем нужную страницу по номеру:
python
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)- В шаблоне используем методы page_obj:
html
{% for item in page_obj %}
{{ item }}
{% endfor %}
<div class="pagination">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">Назад</a>
{% endif %}
<span>Страница {{ page_obj.number }} из {{ page_obj.paginator.num_pages }}</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">Вперед</a>
{% endif %}
</div>Ключевые особенности:
- Автоматически обрабатывает невалидные номера страниц
- Поддерживает методы
has_previous(),has_next(),previous_page_number(),next_page_number() - Можно настроить параметр GET (по умолчанию 'page')
- Работает как с QuerySet, так и со списками

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы