Django - 反向解析 URL 抛出'NoReverseMatch'



我在 urls.py 中url(r'^topics/(?P<topic_id>d+)/$', views.topic, name='topic'),但是当我尝试转到localhost:8000/topics/1时,它告诉我它尝试了一种模式:topics/(?P<topic_id>**\**d+)/$我认为这将是topics/(?P<topic_id>****d+)/$

我正在使用一本名为《Python Crash Course(第1版(》(第18章(的书。 这是一个使用 Django 1.11 和 Python 的本地服务器。我已经尝试了很多关于 url 模式的重新格式化,但我是新手,所以我不知道还能做什么。

...
urlpatterns = [
url(r'^$', views.index, name='index'),
# Show all topics.
url(r'^topics/$', views.topics, name='topics'),
# Detail page for a single topic.
url(r'^topics/(?P<topic_id>d+)/$', views.topic, name='topic'),
]

我希望它弹出正确的页面,但它总是说">/topics/01/的NoReverseMatch">

所以你忘记了URL末尾的尾部斜杠,这就是为什么它不匹配。

您可以从正则表达式中删除斜杠,但这会转移问题:如果您放置斜杠,它将不起作用。

我想你可以用/?$结束模式,但这里有一个可能更强大的解决方案: 贾罗的回答:没有尾部斜杠的 django url 不会重定向

基本上:

检查 settings.py 文件中的APPEND_SLASH设置

最新更新