Django URL 不匹配明明应该匹配

2 投票
1 回答
1312 浏览
提问于 2025-04-16 03:43

在浏览器中,我看到的内容是:
请求的链接是:http://xxxxxx:8000/person/test/

根据在person.urls中定义的URL配置,Django尝试了这些URL模式,顺序如下:
^person/ ^$
^person/ ^person/(?P<slug>[-\w]+)/$
^admin/
但是当前的链接person/test/没有匹配到任何一个。

在Python命令行中,我得到的结果是:
import re
url = 'person/test/'
pattern = re.compile(r'^person/(?P<slug>[-\w]+)/$'
re.match(pattern,url)
<_sre.SRE_Match object at 0xb7716860>

所以它显然应该能匹配这个正则表达式。
只用链接 person/(这个 ^$ 的正则表达式)是可以工作的。

我当然尝试过重启开发服务器。那么这里可能出什么问题呢?

1 个回答

5

它没有匹配到 r'^person/(?P<slug>[-\w]+)/$',而是匹配到了 r'^person/person/(?P<slug>[-\w]+)/$',所以显示了404页面。

你可能在一个urls.py文件中匹配了 ^person/,然后又导入了另一个urls.py,并且在里面也写了“person”。把第二个urls.py中的“person”去掉就可以了。导入后,第二个urls.py只需要匹配URL的其余部分,而不是整个URL。

撰写回答