кодек ‘ascii’ не может декодировать байт 0xa1 в позиции 12: порядковый номер не входит в диапазон (128) ошибка в django при debug= False

#python #django #unicode #ascii #decode

#python #django #unicode #ascii #декодировании

Вопрос:

У меня есть приложение 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] %sn" % (self.log_date_time_string(), format % args)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 12: ordinal not in range(128)
  

Итак, почему я получаю эту ошибку? как мне этого избежать?

Комментарии:

1. Как вы обслуживаете свое приложение?

2. @BurhanKhalid: На данный момент я просто использую supervisor и gunicorn

Ответ №1:

Проверьте кодировку ваших шаблонов (укажите UTF8), попробуйте добавить #-*- coding: utf-8 -*- поверх ваших .py файлов.

Кроме того, если вы используете сервер (Apache или любой другой), проверьте языковые настройки.

Комментарии:

1. На самом деле я сейчас работаю только с supervisor и gunicorn, и у меня был план использовать nginx позже, но бот apache