Как сделать пагинацию в Django для итерируемых в шаблоне объектов?

Для создания пагинации в Django для итерируемых объектов в шаблоне, вы можете использовать встроенный модуль Paginator.

Вот пошаговая инструкция, как добавить пагинацию:

Шаг 1: Импортируйте Paginator из модуля django.core.paginator:

from django.core.paginator import Paginator

Шаг 2: Создайте объект Paginator, передавая ему итерируемый объект и количество элементов, отображаемых на одной странице. Например, для отображения 10 элементов на странице:

paginator = Paginator(my_iterable_object, 10)

Шаг 3: Получите номер запрошенной страницы из параметров запроса. Если номер страницы не указан, присвойте ему значение 1:

page_number = request.GET.get('page', 1)

Шаг 4: Получите объект Page, используя метод get_page у объекта Paginator:

page_obj = paginator.get_page(page_number)

Шаг 5: Теперь вы можете использовать объект page_obj в своем шаблоне для отображения нужных элементов. Например, вы можете вывести список объектов на текущей странице:

{% for obj in page_obj %}
    {{ obj }}
{% endfor %}

Шаг 6: Добавьте ссылки на предыдущую и следующую страницы, а также ссылки на конкретные страницы:

<div class="pagination">
    {% if page_obj.has_previous %}
        <a href="?page={{ page_obj.previous_page_number }}">previous</a>
    {% endif %}
    <span class="current-page">{{ page_obj.number }}</span>
    {% if page_obj.has_next %}
        <a href="?page={{ page_obj.next_page_number }}">next</a>
    {% endif %}
</div>

Это базовая реализация пагинации, которая позволяет вам отображать итерируемые объекты по страницам. Вы можете настроить количество отображаемых элементов на странице, добавить дополнительные ссылки и стилизовать ваш шаблон, чтобы соответствовать вашим потребностям.