假设你有一个完整的 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 进一步处理。

10-07 15:15