2015-07-13 3 views
1

У меня есть приложение торнадо, где URL является чем-то вродеTornado URL регулярных выражений юникод символы

https://example.com/my/path/❤

В смерч у меня есть

handlers = [ 
     (r'/my/path/❤$', MyHandler), 
] 

но это не соответствие с пути.

Я пробовал tornado.escape.utf8() и tornado.escape.url_escape() не повезло.

Если я заменяю %E2%9D%A4, который является кодированной строкой , то он работает, чтобы заставить его работать, не заменяя его на закодированную строку?

ответ

2

Нет, двигатель маршрутизации торнадо в настоящее время работает над кодированной формой URL-адресов, поэтому нецелесообразно использовать символы не-ascii в маршрутах. (Они отлично работают, если их фиксировать как переменную часть пути, поэтому r'/my/path/(.*)' будет правильно отображать и передать его в качестве первого аргумента обработчику).

Обработка Юникод маршрутов является longstanding feature request, но это трудно правильно решить из-за сложностями правил, определенных в RFC 3987.

+1

Благодаря Бен, я надеюсь, что смерч получает эту поддержку в ближайшее время, Что-то вроде обработчиков = [ (r '/ my/path/❤ $', MyHandler, unicode = True), ] – Maddy

Смежные вопросы