#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 в кавычки, это проценты в кодировке .