今天第一次 使用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装一遍)。解决问题的时候一定要沿着对的方向前进,当从别人的经验中得到不到快速解决问题的方法时候,要自己开创一条解决问题的道路,并把这条路公布出来,走自己的路也要让别人有路可走!