Соответствие URL в Django не соответствует правилу в urls.py - PullRequest
0 голосов
/ 14 декабря 2011

urls.py

urlpatterns = patterns('',
    (r'^page/\w+/$', get_page),
    (r'', main),
)

вызов: http://localhost:8081/page/cricket

вызывает main , функцию, а не get_page

Как я могу сделать эту работу?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Регулярное выражение неверно. Это будет соответствовать http://localhost:8081/page/cricket/ или http://localhost:8081/page/dog/. Это не соответствует http://localhost:8081/page/cricket, потому что регулярное выражение требует / в конце.

Исходя из ваших комментариев и вопросов, вы можете захотеть что-то вроде:

   (r'^page/(?P<loc>.*)', get_page)

Это также передало бы все после page/ функции get_page в именованном параметре 'loc'.

Если у вас возникли проблемы со значением специальных символов, обратитесь к Ссылка на регулярное выражение Python .

1 голос
/ 14 декабря 2011

^page/\w+/$' - это регулярное выражение, которое соответствует строке, начинающейся с page/, за которой следуют одна или несколько букв, за которыми следует /, и не содержит больше символов.

page/cricket содержит первые два из этих элементов, но не третий, и поэтому не совпадает.

...