解决Django项目启动Python Console报错和Run manage.py Task功能无法使用

直通车

不想看长文的直接看这里,有兴趣的欢迎阅读后面的内容

解决办法:
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就没有必要存在了,而且与新的包重名,一般我们都会选择删除它。同时,由于项目配置路径变了,项目的其他地方也需要做对应的修改,这里就不多阐述了,会修改项目结构的,应该都知道要改些什么地方。

为了照顾不懂的小白,这里还是讲一下吧!!!

  1. 修改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()
    

  2. 如果是用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提供的这两个工具都用不了了

  1. Python Console还可以用,但是没有Django的环境了,而且启动就有报错,看着就很糟心。

  2. 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功能启动报错的解决办法了。
如果大家有更好的解决办法,欢迎分享留言哦~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值