Регулярные выражения и русские символы в Django

#python #django #regex

#python #django #регулярное выражение

Вопрос:

У меня есть один URL, подобный этому

url(ur'^gradebook/(?P<group>[w-А-Яа-я])$', some_view, name='some_view')

и я ожидаю, что он обработает запрос, подобный

../gradebook/group='Ф-12б'

но я получаю сообщение об ошибке, и сервер падает.

Пожалуйста, помогите мне разобраться с русскими символами

Комментарии:

1. group='...' Не совпадает с регулярным выражением.

Ответ №1:

group='…' Часть представляет собой скорее проблему, поскольку знак уравнения = не является частью группы символов.

Кроме того, вы должны сопоставить несколько символов:

 #                    quantifier  ↓
url(ur'^gradebook/(?P[w-А-Яа-я] )$', some_view, name='some_view')  

тогда это может соответствовать URL:

 /gradebook/Ф-12б  

но если вы также хотите сопоставить group=’…’ , вы должны включить символ = и ' :

 #             extra characters  ↓↓
url(ur"^gradebook/(?P[w-А-Яа-я'=] )$", some_view, name='some_view')  

Затем вы можете сопоставить с:

 /gradebook/group='Ф-12б'  

хотя это может принять слишком много, поскольку оно также может принимать f'q'a=gr=f , например.

Комментарии:

1. спасибо за ответ, но, к сожалению, я не заметил отсутствия <group> . Теперь я это исправил. И ваша версия тоже у меня не работает, кажется, что django ругается на русские символы

2. @jecloy: ну, я протестировал регулярное выражение локально, и оно сработало. Но вы не можете просто передать URL в кавычки, это проценты в кодировке .