Один из способов сделать это с помощью вашего 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-адресов.