直通车
不想看长文的直接看这里,有兴趣的欢迎阅读后面的内容
解决办法:
settings.py
配置文件不能删,不过可以清空里面的内容,仅保留个空文件,在settings/__init__.py
中导入所有开发环境的所有配置,即:from .dev import *
说明:此方法仅可用于修改Djanog项目默认的配置文件路径导致错误的情况
起因
在Django项目中,项目配置一般都是放在settings.py
中,但是这样也带来了新的问题,本地配置,测试服务器的配置和正式服务器的配置不一样,每次更新都要改来改去,特别麻烦,所以一般都会对配置的settings进行改造。最常见的,就是在项目同名目录下,新建一个名为settings
的包,然后将各个环境的配置放入这个包下面,结构如下:
项目同名目录
│ asgi.py
│ router.py
│ settings.py # Django 原本的settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
├─settings # 新建的包,用于存放各种环境的配置信息
│ │ base.py # 公共的基础配置,例如安装的app,中间件等
│ │ dev.py # 开发环境的配置,比如开启调试,本地数据库,安装调试插件
│ │ prod.py # 生产环境的配置,比如生产数据库,关闭调试模式等
│ │ __init__.py
通过上面的修改后,默认的settings就没有必要存在了,而且与新的包重名,一般我们都会选择删除它。同时,由于项目配置路径变了,项目的其他地方也需要做对应的修改,这里就不多阐述了,会修改项目结构的,应该都知道要改些什么地方。
为了照顾不懂的小白,这里还是讲一下吧!!!
修改
manage.py
文件def main(): """Run administrative tasks.""" # 这个是原来的配置 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoDBOP.settings') # 下面是修改后的配置,就是指定settings文件位置 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoDBOP.settings.dev') ... if __name__ == '__main__': main()
如果是用
Pycharm
启动项目,需要修改Pycharm
里面的项目配置选右上角运行按钮左边的下拉框,点击,选择
Edit Configuration
。在弹出的窗口中,找到Configuration
, 在Environment variables
中,修改DJANGO_SETTINGS_MODULE
的值,同样的,设置为使用的配置文件的位置
导致的问题
只要正确修改了项目的manage.py
里面的配置文件路径,那么通过命令运行项目就没有问题了。
在Pycharm
有两个好用的东西对Django项目
非常友好,一个是Python Console
,一个是Tools
里面的Run manage.py Task
。在Django项目
中,打开Python COnsole
系统会加载Django的运行环境进去,我们可以在里面很方便地调用项目的资源进行调试。而运行Run manage.py Task
工具后也会打开一个控制台,在这里可以快捷地使用manage.py
的命令,而且还有提示信息,非常方便,用过的都知道,我一般模型变更的命令都是在这里面执行的。
如果按照上面的步骤对配置文件进行修改,那么Pycharm提供的这两个工具都用不了了
-
Python Console
还可以用,但是没有Django的环境了,而且启动就有报错,看着就很糟心。 -
Run manage.py Task
直接就打不开了,按钮都是灰色的…
这是因为Pycharm使用项目默认的配置路径去加载配置文件,然后加载Django的运行环境,而我们修改了默认的配置文件,并且删除了settings.py,所以启动就报错了。
解决办法
在网上找了半天,没有找到完美的解决办法,都是建议直接在控制台使用python manage.py shell
启动Python终端,但是这样也很麻烦啊,而且…这种方式没有语法提示**(Python Console
里面可以通过Tab键不全或者提示备选项)。**
控制台的问题勉强算是解决了,但是,另一个manage.py
工具怎么办? 想想每次做操作都要输入“前缀”——python manage.py
就心有不甘,而且管理命令都老长了,比如:createsuperuser
, makemigrations
对于初学者而言肯定是不好记,这个时候就会怀念Pycharm那个有提示的工具了。
目前最好的解决办法
通过多次测试,发现只要不删除项目主目录下的settings.py
文件就不会报错了。所以解决办法就是保留settings.py,不过,settings.py文件里面的内容可以全部删掉,只需要一个空文件就可以了,然后,需要在新建的settings包
里面的__init__.py
中导入开发所使用的环境的所有配置项
# settings/__init__.py
from .dev import *
这样再运行Python Console
终端就不会再报错了,而且Run manage.py Task
工具也可以正常使用了。
以上就是django项目修改项目配置结构后导致Python Console功能启动报错的解决办法了。
如果大家有更好的解决办法,欢迎分享留言哦~