Django view param并不是FastCGI的引用

时间:2013-08-07 22:45:51

标签: django unicode nginx fastcgi

我在Nginx + FastCGI中有Django站点,如果URL中有特殊字符,则Django解析的视图参数不是不加引号。

示例:

# python manage.py runfcgi port=8099 --settings=settings
browser url: http://127.0.0.1/Contact/%E6%9C%B1/
Django urlpattern: url(r'^(?i)Contact/(?P<q>.*)/$', 'qsearch'),

param&#39; q&#39;由qsearch函数捕获的是 u&#39;%E6%9C%B1&#39; 。但是,如果不加引号,它应该是 u&#39;

同样的程序可以很好地得到你的帮助。使用runserver进行调试时。 所以我必须使用变通方法:

q = unicode(urllib.unquote(str(q)), 'u8')

Nginx conf:

location / {
    fastcgi_pass 127.0.0.1:8099;
    include /home/fastcgi_django.conf;
}

fastcgi_django.conf:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
fastcgi_param  QUERY_STRING       $query_string; 
fastcgi_param  REQUEST_METHOD     $request_method; 
fastcgi_param  CONTENT_TYPE       $content_type; 
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  REQUEST_URI        $request_uri; 
fastcgi_param  DOCUMENT_URI       $document_uri; 
fastcgi_param  DOCUMENT_ROOT      $document_root; 
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; 
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr; 
fastcgi_param  REMOTE_PORT        $remote_port; 
fastcgi_param  SERVER_ADDR        $server_addr; 
fastcgi_param  SERVER_PORT        $server_port; 
fastcgi_param  SERVER_NAME        $server_name;

不知道问题来自Nginx或Django或FastCGI接口。希望有人可以提供帮助。

查理

0 个答案:

没有答案