'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
原创
©著作权归作者所有:来自51CTO博客作者friendan的原创作品,请联系作者获取转载授权,否则将追究法律责任
安装好django suit后,运行服务器:
python manage.py runserver
在表单页面输入中文,保存时,出现如下错误:
UnicodeEncodeError at /admin/ModelApp/server/1/change/
'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
Request Method:
POST
Request URL:
http://127.0.0.1:8000/admin/ModelApp/server/1/change/
Django Version:
1.11.5
Exception Type:
UnicodeEncodeError
Exception Value:
'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
Exception Location:
D:\Python\27\lib\site-packages\django-1.11.5-py2.7.egg\django\utils\encoding.py in force_text, line 80
Python Executable:
D:\Python\27\python.exe
Python Version:
2.7.13
Python Path:
...
解决方法:
在manage.py头部加入如下代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
如:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "GM_yaowentan.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)