Django manage.py sunserver 编码问题记录和解决方法!

xiaoxiao2021-02-28  136

今天第一次 使用Django碰到了两个大坑,耗了我一下的时间才解决掉,记录一下,希望能帮到别的同学。

1 2 django-admin.py startproject project_name 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试

在执行   python manage.py runserver    这个命令的时候报错,具体的错误如下:

D:\workspace\jimmy>python manage.py runserver Traceback (most recent call last):   File "manage.py", line 24, in <module>     execute_from_command_line(sys.argv)   File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line     utility.execute()   File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 355, in execute     self.fetch_command(subcommand).run_from_argv(self.argv)   File "C:\Python27\lib\site-packages\django\core\management\base.py", line 283,  in run_from_argv     self.execute(*args, **cmd_options)   File "C:\Python27\lib\site-packages\django\core\management\commands\runserver. py", line 63, in execute     super(Command, self).execute(*args, **options)   File "C:\Python27\lib\site-packages\django\core\management\base.py", line 330,  in execute     output = self.handle(*args, **options)   File "C:\Python27\lib\site-packages\django\core\management\commands\runserver. py", line 102, in handle     self.run(**options)   File "C:\Python27\lib\site-packages\django\core\management\commands\runserver. py", line 111, in run     autoreload.main(self.inner_run, None, options)   File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 341, in main     reloader(wrapped_main_func, args, kwargs)   File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 312, in python_reloader     exit_code = restart_with_reloader()   File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 294, in restart_with_reloader     str_value = force_bytes(new_environ[key], encoding=encoding)   File "C:\Python27\lib\site-packages\django\utils\encoding.py", line 124, in fo rce_bytes     return s.decode('utf-8', errors).encode(encoding, errors)   File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xca in position 367: invalid  continuation byte

废话补多少,解决的办法是:

修改C:\Python27\lib\site-packages\django\utils\autoreload.py  在这个文件的第294行,原本这一行的代码是:

       str_value = force_bytes(new_environ[key], encoding=encoding)

将其修改为:

      str_value = force_bytes(new_environ[key], encoding=‘utf-8’)

保存这个文件。然后重新在cmd的界面里面执行python manage.py runserver就可以执行成功了。

【总结】:

这个是由于系统编码的问题,与你个人设置无任何关系。

只要跟编程相关的代码一律不要跟中文粘上关系,这是衷心的建议。

出错了不可怕,可怕的是出错之后不能用正确的态度去解决问题。要从本质上解决问题,不要选择逃避(刚刚还想要不要重新把django装一遍)。解决问题的时候一定要沿着对的方向前进,当从别人的经验中得到不到快速解决问题的方法时候,要自己开创一条解决问题的道路,并把这条路公布出来,走自己的路也要让别人有路可走!

转载请注明原文地址: https://www.6miu.com/read-29033.html

最新回复(0)