我的Django管理网站127.0.0.1:8000/admin/
有问题。以前,我通过输入python manage.py runserver
来运行服务器。我现在在Django docs教程第2部分。我关注它,当我打开管理站点时,我遇到了这个问题:
UnicodeDecodeError at /admin/login/
'utf-8' codec can't decode byte 0xee in position 394374: invalid continuation byte
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/login/?next=/admin/
Django Version: 1.8.3
Exception Type: UnicodeDecodeError
Exception Value:
'utf-8' codec can't decode byte 0xee in position 394374: invalid continuation byte
Exception Location: c:\Python34\lib\codecs.py in decode, line 319
Python Executable: c:\Python34\python.exe
Python Version: 3.4.3
Python Path:
['C:\\Python34\\Scripts\\mypoll',
'C:\\WINDOWS\\system32\\python34.zip',
'c:\\Python34\\DLLs',
'c:\\Python34\\lib',
'c:\\Python34',
'c:\\Python34\\lib\\site-packages']
Server time: Sat, 1 Aug 2015 22:19:09 +0700
追溯:
Traceback:
File "c:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response
164. response = response.render()
File "c:\Python34\lib\site-packages\django\template\response.py" in render
158. self.content = self.rendered_content
File "c:\Python34\lib\site-packages\django\template\response.py" in rendered_content
133. template = self._resolve_template(self.template_name)
File "c:\Python34\lib\site-packages\django\template\response.py" in _resolve_template
88. new_template = self.resolve_template(template)
File "c:\Python34\lib\site-packages\django\template\response.py" in resolve_template
80. return loader.get_template(template, using=self.using)
File "c:\Python34\lib\site-packages\django\template\loader.py" in get_template
35. return engine.get_template(template_name, dirs)
File "c:\Python34\lib\site-packages\django\template\backends\django.py" in get_template
30. return Template(self.engine.get_template(template_name, dirs))
File "c:\Python34\lib\site-packages\django\template\engine.py" in get_template
167. template, origin = self.find_template(template_name, dirs)
File "c:\Python34\lib\site-packages\django\template\engine.py" in find_template
141. source, display_name = loader(name, dirs)
File "c:\Python34\lib\site-packages\django\template\loaders\base.py" in __call__
13. return self.load_template(template_name, template_dirs)
File "c:\Python34\lib\site-packages\django\template\loaders\base.py" in load_template
17. template_name, template_dirs)
File "c:\Python34\lib\site-packages\django\template\loaders\app_directories.py" in load_template_source
39. return fp.read(), filepath
File "c:\Python34\lib\codecs.py" in decode
319. (result, consumed) = self._buffer_decode(data, self.errors, final)
Exception Type: UnicodeDecodeError at /admin/login/
Exception Value: 'utf-8' codec can't decode byte 0xee in position 394374: invalid continuation byte
在页面底部,它指出:
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.
然后我将DEBUG = True
更改为False
。自动,服务器将停止,因为在命令提示符下声明:CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
然后,我无能为力。我该怎么办 ?有什么解决方案吗?我搜索了谷歌和stackoverflow但我找不到任何类似于我的问题。我希望有人可以帮我解决这个问题。
由于
答案 0 :(得分:1)
故障:
异常由python本身发布。尝试将一些原始数据流解码为字符串时会发生这种情况。如果你是python的新手,你应该知道python3明确区分了字符串aka str
(包含字符)和原始数据aka bytes
(只包含字节,可能是二进制数据)。 / p>
此处引发的异常意味着由于某种原因,python被命令使用utf-8
编码将一些字节解码为文本,但数据无效utf-8
- 编码文本。
假设您来自西方国家,我的赌注是文本使用ANSI或ISO-8859-1并且其中包含“î”
。它在ANSI中编码为0xee
,但应在UTF-8中编码为0xC3 0xAE
。
这可能有几个原因。在这里,从回溯中,它发生在渲染模板时。更具体地说,从应用程序的目录中呈现模板。因此,您在其中一个应用中有一个未正确编码的模板。
怎么回事?好吧,我看到你正在运行Windows机箱。在文本编码方面,Windows环境有点混乱。每个软件都有自己的默认使用意见(当它可以更改时)。例如,记事本默认仍然使用ANSI编码,或者在西欧编码ISO-8859-1。
您用于编辑模板的软件之一很可能是将文件编码为任何内容。你有两个选择:
FILE_CHARSET='iso-8859-1'
行或工具使用的任何编码来实现此目的。在任何情况下,必须 确定 所有您的工具对所使用的编码达成一致,否则您将有其他解码错误或某些字符会被破坏(并显示为奇怪的î
或?
符号)。
对Django教程没用,但值得在python生活中的某些时候阅读:Unicode handling in Python