Почему появляется ошибка NoReverseMatch при попытке постраничной обработки моего сайта django?

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

Что я уже сделал для своего кода, так это:

.../clubs/views.py

class ClubListView(generic.ListView):
    model = Club
    paginate_by = 6

.../clubs/urls.py

from django.urls import path
from . import views

app_name = "clubs"

urlpatterns = [
    path('', views.ClubListView.as_view(), name="club-list"),
    path('<int:pk>/', views.ClubDetailView.as_view(), name="club-detail"), 
]

.../clubs/club_list.html

{% block group_content %}
<hr>
{% comment %} Complete making group display. {% endcomment %}
<p></p>
<div class="col-md-8">
    <div class="container">
        {% for club in club_list %}
        <a class="list-group-item" href="{{ club.get_absolute_url }}">
            <h3 class="title list-group-item-heading">{{ club.name }}</h3>
            <span>{{ club.slogan|safe }}</span>
        </a>
        <p></p>
        <br>
        {% endfor %}
    </div>
</div>

{% endblock %}

{% block pagination %}
    {% if page_obj.has_previous %}
        <a href="{% url 'club-list' page_obj.previous_page_number %}">
            Previous Page
        </a>
    {% endif%}
    {% if page_obj.has_next %}
        <a href="{% url 'club-list' page_obj.next_page_number %}">
            Next Page
        </a>
    {% endif%}
{% endblock %}

Однако он по-прежнему выдает ошибку NoReverseMatch 'club-list' на моей html-странице, даже если она задана из файла urls.py. Я не уверен, что не понимаю, откуда взялась эта проблема.

Вы передаете номер следующей страницы/номер предыдущей страницы как часть функции {% url %}, которая создает путь, однако ваш URLS.py не ожидает его как часть пути URL. например, у вас нет urlpattern для listview/12/.

Для представления списка по умолчанию номера следующей и предыдущей страниц передаются как часть строки запроса, а не как путь, например,

/listview?page=12

так что ваш шаблон должен выглядеть примерно так (из docs)

{% block pagination %}
        {% if page_obj.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}

         Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.

        {% 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 %}

{% endblock %}
Вернуться на верх