我在 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设置