使用您的 urls.py 执行此操作的一种方法是使用 $ 终止您的正则表达式或查看您的 url 添加的顺序。
例如:
url(r'^page/about_us/$', 'example.views.about_us', name='about_us'),
url(r'^page/about_us/contact_info/$', 'example.views.contact_info', name='contact_info'),
url(r'^page/about_us/contact_info/map/$', 'example.views.map', name='map'),
可以正常工作。也会:
url(r'^page/about_us/contact_info/map/', 'example.views.map', name='map'),
url(r'^page/about_us/contact_info/', 'example.views.contact_info', name='contact_info'),
url(r'^page/about_us/', 'example.views.about_us', name='about_us'),
但这不会让您访问除 about_us 页面以外的页面:
url(r'^page/about_us/', 'example.views.about_us', name='about_us'),
url(r'^page/about_us/contact_info/', 'example.views.contact_info', name='contact_info'),
url(r'^page/about_us/contact_info/map/', 'example.views.map', name='map'),
在最后一个示例中,如果您的站点位于 www.example.com,而您转到 www.example.com/page/about_us/,您将到达 about_us 视图。但是,如果您访问 www.example.com/page/about_us/contact_us/,您仍然会到达 about_us 视图。这是因为如果您的正则表达式不以 $ 结尾,它将匹配以您的表达式开头的任何内容并重定向您。
按顺序检查 url,因此如果您不使用 $ 并且正确添加了 url 的顺序,您仍然会到达正确的页面,就像在第二个 url 块中一样。