假设你有一个完整的 localhost:thisdir/callview/
url
我注意到在 urls.py 文件中,包含的命名空间写为:
(r'^thisdir/', include('thisdir.urls', namespace='thisdir)),
其中开始字符串被检查,但不结束,并且 View 调用是这样完成的:
(r'^callview/$', 'thisdir.views.index', name='myview')
用 $ 检查字符串的结尾。如果包含模式将“thisdir/”从完整的 url 中断开以首先检查该部分,并且我认为它一次检查每个字符串部分(所以“thisdir/”在字符串的末尾)为什么我从来没有看到
(r'^thisdir/$', ...)
谢谢你
最佳答案
https://docs.djangoproject.com/en/1.8/topics/http/urls/
如果您使用 $
终止包含,则该规则将不再匹配包含文件中的任何内容,因为它只会匹配以包含正则表达式结尾的 URL。
您从未看到它的原因是因为它会阻止 URL 包含的目的。(r'^thisdir/$', <include>)
由于终止 thisdir/
,这只会匹配等于 $
的 url。因此,诸如 thisdir/foobar/
之类的 url 将不匹配并且永远不会被包含处理。
另一方面,如果您将 $
排除在正则表达式之外,/thisdir/<anything>
将匹配正则表达式,因此可以通过包含的 url 进一步处理。