NoReverseMatch 在 /basketball/ Reverse for 'detail'

我有一个 Django 应用程序,用户可以在其中使用 Basketball 模型创建一个 Basketball 对象并将其发布到作为 ListView 子类的提要。然后,我希望其他用户能够通过单击该对象的超链接来访问该帖子的详细信息。

问题是,当我将详细信息页面的 url 设置为包含变量“slug”作为对象 slug 时,它会用 basketball/urls.py 中看到的 url 路由“”覆盖我的列表页面,而不是路由到列表页面它说找不到带有空 slug 的页面。这不允许我访问 url“ http://127.0.0.1:8000/basketball/ ”

我的印象是 Django 按顺序搜索 url 路由,因此由于空白路径是第一条路由,因此应该在包含 slug 的路由之前看到它。

请注意,直接导致问题的代码片段位于 basketball_list.html 中:

<a href= "{% url 'basketball:detail' basketball.slug %}">

删除此代码后,我可以访问“ http://127.0.0.1:8000/basketball/ ”,但超链接不存在,因此无法达到目的。

请注意,我使用的是:Python == 3.8.3 Django == 3.0.6


三国纷争
浏览 66回答 1
1回答

慕的地8271018

您的网址与 basketball_list 循环变量 (x) 不匹配。这个{% for x in basketball_list %}&nbsp; <li><a href= "{% url 'basketball:detail' basketball.slug %}">{{ x }}</a></li>{% endfor %}应该{% for x in basketball_list %}&nbsp; <li><a href= "{% url 'basketball:detail' x.slug %}">{{ x }}</a></li>{% endfor %}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python