Почему появляется ошибка 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">« 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 »</a>
{% endif %}
{% endblock %}