Не срабатывает пагинация. В чём причина?

У меня не срабатывает пагинация вообще, как будто её и нет. Подскажите пожалуйста в чём причина?

в views.py

def paginator(request):
    mebels = Mebel.objects.all()
    pag = Paginator(mebels, 5)

    page_number = request.GET.get("page")
    page_obj = pag.get_page(page_number)
    return render(
        request,
        "paginator.html",
        {
            "page_obj": page_obj
        }
    )

в urls.py(в настройках приложения)

path('paginator', views.paginator, name='paginator')

в settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'django.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 5
}
INSTALLED_APPS = ['...', 'django.core.paginator']

в paginator.html

{% extends 'base.html' %}

{% block content  %}

{% for mebels in page_obj %}
    {{ mebels.full_name|upper }}<br>
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>

        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
            <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>

{% endblock %}

Вот эта реализация у меня.

Ошибок не выдаёт, но и пагинации постраничной не происходит. html страница выдаётся целиком, как и без этой реализации.

Попробовала ещё вот эту реализацию постраничной пагинации на основе классов с другим html файлом:

в views.py

class MebelListView(ListView):
    model = Mebel
    template_name = 'app_1/show_page.html'
    context_object_name = 'mebels'
    paginate_by = 5
    paginated_orphans = 5

    def get_queryset(self):
        tag_name = self.kwargs["current_page"]
        return models.Mebel.object.filter(tags__slug=tag_name).distinct()

    def get_context_data(self, **kwargs):
        context = super().get_context_data
        current_page = context.pop('page_obj', None)
        context["current_page"] = current_page
        return context

в urls.py(в настройках приложения)

path('show_page', views.MebelListView.as_view(), name='show_page')

в settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'django.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 5
}
INSTALLED_APPS = ['...', 'django.core.paginator']

в show_page.html

{% extends 'base.html' %}

{% block content %}
    <h1 align="center">Вся наша мебель</h1>

{% if mebels  %}
<div class="row justify-content-center">
    <div class="col-auto">
        <table class="table table-responsive">
            <thead class="thead-inverse">
              <tr>
                <th scope="col">#</th>
                <th scope="col">Цена</th>
                <th scope="col">Описание</th>
              </tr>
            </thead>
            <tbody>
            {% for mebel in mebels %}
                <tr>
                    <td>{{current_page.start_index|add:forloop.counter0}}</td>
                    <th scope="row"><a href={{mebel.link}}>{{mebel.price}}</a></th>
                    <td>{{mebel.description}}</td>
                </tr>
            {% endfor %}
            </tbody>
        </table>
        {% if is_paginated %}
         <nav>
            <ul class="pagination">
                {% if current_page.has_previous %}
                    <li class="page-item"><a class="page-link" href="?page={{current_page.previous_page_number}}">Previous</a></li>
                {% endif %}
                {% for page in paginator.page_range %}
                    <li class="page-item {% if page == current_page.number %}active{% endif %}">
                        <a class="page-link" href="?page={{page}}">{{page}}</a>
                    </li>
                {% endfor %}
                {% if current_page.has_next %}
                    <li class="page-item"><a class="page-link" href="?page={{current_page.next_page_number}}">Next</a></li>
                {% endif %}
            </ul>
        </nav>
        {% endif %}
    </div>
</div>
{% endblock %}

С этой реализацией выходит всё то же самое - без ошибок, но и без пагинации.

Я недавно в программировании и с пагинацией сталкиваюсь впервые. Помогите пожалуйста найти ошибку и исправить её. Заранее благодарю)


Ответы (0 шт):