Django URL 不匹配明明应该匹配
在浏览器中,我看到的内容是:
请求的链接是: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。