Django url 不匹配,尽管它应该匹配
在浏览器中我得到: 请求URL:http://xxxxxx:8000/person/test/
使用person中定义的URLconf .urls,Django 按照以下顺序尝试了这些 URL 模式:^人/^$
^person/ ^person/(?P
^admin/
当前 URL person/test/
与其中任何一个都不匹配。
在 python shell 中我得到:重新导入
url = 'person/test/'
pattern = re.compile(r'^person/(?P
re.match(pattern,url)
<_sre.SRE_Match object at 0xb7716860>
所以它显然应该与正则表达式匹配。 仅使用 url person/ (^$ 正则表达式)确实有效。
当然,我尝试过重新启动开发服务器。这里可能出了什么问题?
In browser I get:
Request URL: http://xxxxxx:8000/person/test/
Using the URLconf defined in person.urls, Django tried these URL patterns, in this order:^person/ ^$
^person/ ^person/(?P<slug>[-\w]+)/$
^admin/
The current URL, person/test/
, didn't match any of these.
In python shell I get:import re
url = 'person/test/'
pattern = re.compile(r'^person/(?P<slug>[-\w]+)/$'
re.match(pattern,url)
<_sre.SRE_Match object at 0xb7716860>
So it obviously should match the regexp.
Using only url person/ (the ^$ regexp) does work.
I've tried restarting the development server of course. What could be wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它与
r'^person/(?P[-\w]+)/$'
不匹配,404 页面显示它与r'^person 匹配/person/(?P[-\w]+)/$'
您可能在 urls.py 中匹配了
^person/
,然后导入了另一个 urls.py并将“人”也放在那里。从第二个 urls.py 中删除它。导入后,辅助 urls.py 只需匹配 URL 的其余部分,而不是整个 URL。It isn't matching against
r'^person/(?P<slug>[-\w]+)/$'
, the 404 page shows that it's matching againstr'^person/person/(?P<slug>[-\w]+)/$'
You've probably matched
^person/
in a urls.py, then imported another urls.py and put "person" in there also. Remove it from the second urls.py. After importing, a secondary urls.py only has to match the rest of the URL, not the whole URL.