在Django中,当debug=False时出现'ascii'编码无法解码字节0xa1的错误
我有一个Django应用,版本是1.2.3,最近我把它更新到了1.6.5,并且做了很多过时功能的修改,比如更新了url标签等等。在本地使用debug=True
模式运行时,一切都很顺利。当我把同样的代码上传到服务器,并尝试在debug=True
模式下运行时,网站也能成功运行。但是因为这是生产环境,我们应该把debug
设置为False
,所以当我在False
模式下运行服务器时,终端出现了下面的错误
Exception happened during processing of request from ('xxx.xx.xxx.xxx', 54969)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/root/Envs/proj/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 126, in __init__
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/usr/lib/python2.7/wsgiref/simple_server.py", line 117, in handle
if not self.parse_request(): # An error code has been sent, just exit
File "/usr/lib/python2.7/BaseHTTPServer.py", line 286, in parse_request
self.send_error(400, "Bad request syntax (%r)" % requestline)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 368, in send_error
self.send_response(code, message)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 385, in send_response
self.log_request(code)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 422, in log_request
self.requestline, str(code), str(size))
File "/root/Envs/proj/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 138, in log_message
msg = "[%s] %s\n" % (self.log_date_time_string(), format % args)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 12: ordinal not in range(128)
那么,为什么我会遇到这个错误呢?我该怎么避免这个问题呢?
1 个回答
0
检查一下你的模板文件的编码,确保它是UTF8格式。你可以在你的.py
文件的最上面加上#-*- coding: utf-8 -*-
这行代码。
另外,如果你在使用服务器(比如Apache之类的),也要检查一下语言设置。