为什么NoReverseMatch错误弹出时,试图分页我的django网站?



我有一个来自模型的数据列表,我想对其进行分页,因为它看起来在一个单一页面上被淹没,并且页面加载通常需要更长的时间。然而,当我尝试使用分页方法时,它似乎在我的代码中不起作用。

我已经为我的代码做了:

…/俱乐部/views.py

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

…/俱乐部/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"), 
]

…/俱乐部/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 %}函数的一部分,但是您的url .py不期望它作为url路径的一部分。例如,你没有listview/12/的url模式。

对于列表视图,默认情况下,下一页和前一页编号作为查询字符串的一部分而不是路径传递,例如,

/视图?= 12页

所以你的模板应该看起来更像(来自文档)

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

最新更新