Cтатья: Установка и настройка Django, Nginx через Tornado в Debian / Ubuntu

Вопрос:

При переходе по ссылке, где присутствует не только ascii символы, например:

/tags/все-про-убунту

в Django приходит не исходная строка, а строка в ASCII-кодах:

/tags/%D0%B2%D1%81%D0%B5-%D0%BF%D1%80%D0%BE-%D1%83%D0%B1%D1%83%D0%BD%D1%82%D1%83

спросил May 06 '10 at 10:18

dw's gravatar image

dw
156

обновлено May 06 '10 at 10:23


То, что в торнадо русский текст приходит в ascii-кодах - это нормально.

А вот то, что торнадо не возвращает полученную ссылку в исходных текст, вероятно, не очень правильно. Патчик для tornado и не ascii-символов предлагали в группе:

diff --git a/tornado/httpserver.py b/tornado/httpserver.py 
index ec95b7f..ef9e595 100644 
--- a/tornado/httpserver.py 
+++ b/tornado/httpserver.py 
@@ -27,6 +27,7 @@ import os 
 import socket 
 import time 
 import urlparse 
+import urllib 
 try: 
     import ssl # Python 2.6+ 
@@ -361,7 +362,7 @@ class HTTPRequest(object): 
                  body=None, remote_ip=None, protocol=None, host=None, 
                  files=None, connection=None): 
         self.method = method 
-        self.uri = uri 
+        self.uri = urllib.unquote_plus(uri).decode('utf-8') 
         self.version = version 
         self.headers = headers or HTTPHeaders() 
         self.body = body or "" 
@@ -379,7 +380,7 @@ class HTTPRequest(object): 
         self._start_time = time.time() 
         self._finish_time = None 
-        scheme, netloc, path, query, fragment = urlparse.urlsplit(uri) 
+        scheme, netloc, path, query, fragment = urlparse.urlsplit(self.uri) 
         self.path = path 
         self.query = query 
         arguments = cgi.parse_qs(query)

ответил May 06 '10 at 10:29

debian_world_ru's gravatar image

debian_world_ru
1

Ваш ответ
вы можете ответить анонимно, а потом войти
переключить предпросмотр