You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django执行makemigrations提示SECRET_KEY为空但已配置的问题求助

问题原因

你执行python manage.py makemigrations时没有指定配置文件,Django默认会读取portfolio.settings模块作为配置,而你将配置拆分为三个文件后,settings文件夹下没有在__init__.py中指定默认加载的配置,也没有修改manage.py的默认配置路径,导致Django无法读取到dev.py中设置的SECRET_KEY,才会抛出配置为空的错误。你运行runserver时手动指定了--settings=portfolio.settings.dev,所以能正常启动。

解决方案

  • 方案1:执行Django命令时统一带上配置参数,和runserver保持一致:
    python manage.py makemigrations --settings=portfolio.settings.dev
    
    后续执行migrate、createsuperuser等命令都需要加上该参数。
  • 方案2:修改manage.py的默认配置路径,本地开发无需重复加参数:
    打开项目根目录的manage.py文件,找到如下代码:
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'portfolio.settings')
    
    修改为:
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'portfolio.settings.dev')
    
    保存后执行所有Django命令默认会加载dev.py的配置。
  • 方案3:在settings文件夹下的__init__.py中添加环境判断,自动加载对应配置:
    在settings/__init__.py中写入以下代码:
    import os
    # 读取环境变量判断运行环境,默认是开发环境
    run_env = os.environ.get('RUN_ENV', 'dev')
    if run_env == 'prod':
        from .prod import *
    else:
        from .dev import *
    
    部署到生产环境时,只需要在服务器设置环境变量RUN_ENV=prod即可自动加载生产配置,不需要修改代码。

内容的提问来源于stack exchange,提问作者Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:18:01