Торнадо и Юникод - PullRequest
       19

Торнадо и Юникод

0 голосов
/ 12 ноября 2011

Торнадо принимает юникод в адресе?

#coding: utf-8 (there is # dont know how to show it here...)
import tornado.ioloop
import tornado.web

class Abdou(tornado.web.RequestHandler):
  def get(self):
    self.write("hi")

miaw = tornado.web.Application([
(u'/ééé', Abdou),
])

if __name__ == "__main__":
  miaw.listen(8000)
  tornado.ioloop.IOLoop

во Фляске это сработало !!!

from flask import Flask
miaw = Flask(__name__)

@miaw.route(u'/ééé')
def abdou():
  return "hi!"

if __name__ == '__main__':
  miaw.run()

Примечание: та же проблема при использовании escape like / hello world, но во Flask это работает!

NB2: спасибо "мудрый" за редактирование :) теперь он выглядит более профессионально, как код: p

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Посмотрите на tornado.escape.url_escape(value) и tornado.escape.url_unescape(value, encoding='utf-8').

Примерно так:

#coding: utf-8 (there is # dont know how to show it here...)
import tornado.ioloop
import tornado.web

class Abdou(tornado.web.RequestHandler):
    def get(self):
        self.write("hi")

miaw = tornado.web.Application([
(tornado.escape.url_escape(u'/ééé'), Abdou),
])

if __name__ == "__main__":
    miaw.listen(8000)
    tornado.ioloop.IOLoop

Возможно, вы также захотите получить URL-адреса, которые вводит пользователь. Я думаю, что вы делаете это как:

class Page(tornado.web.RequestHandler):
    def get(self,title):
        title = tornado.escape.url_unescape(title, encoding='utf-8')
        self.write(title)


miaw = tornado.web.Application([
(tornado.escape.url_escape(u'/ééé/(*.)'), Page),
])
# you can get /ééé/page_name, where page_name can be unicode

if __name__ == "__main__":
    miaw.listen(8000)
    tornado.ioloop.IOLoop
0 голосов
/ 13 ноября 2011

похоже, что это ошибка:

http://groups.google.com/group/python-tornado/browse_thread/thread/1f89cbeee05ba6fb/c028d3e4744eec8a?lnk=gst&q=unicode#c028d3e4744eec8a

и ссылка мертва :( 404 следит за мной даже здесь!

...