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

Django博客项目KeyError:无法读取环境变量myBlog

Django多配置架构KeyError: 'myBlog' 解决方案

一、先确认环境变量是否被终端正确读取

  • Windows CMD终端执行:echo %myBlog%,PowerShell执行:$env:myBlog,如果没有输出预期的prod,说明环境变量未生效:
    • 检查环境变量是配置在用户变量还是系统变量,确保当前用户有权限读取
    • 配置环境变量后必须重启终端,终端只会在启动时加载环境变量
    • 若使用第三方终端(如Git Bash),需确认它是否能读取Windows系统环境变量

二、调整Settings加载逻辑,避免提前读取环境变量

你的__init__.py先导入base.py,而base.py里直接用os.environ['myBlog']读取环境变量,导致还没进入环境判断逻辑就报错。修改如下:

1. 修改settings/__init__.py

import os

# 先获取环境变量,优先用系统环境变量,默认 fallback 到local
env = os.environ.get('myBlog', 'local')

if env == 'prod':
    from .prod import *
else:
    from .local import *

2. 移除base.py中的冗余代码

删除base.py里的这一行:

myBlog = os.environ['myBlog']

这个变量是用来切换环境的,不需要在基础配置中定义。

三、可选:用.env文件管理环境变量(更稳定)

如果经常遇到系统环境变量不生效的问题,推荐用python-dotenv管理:

  1. 安装依赖:
pip install python-dotenv
  1. 在项目根目录创建.env文件:
myBlog=prod
SECRET_KEY=your-actual-secret-key
  1. 在settings/__init__.py最顶部添加加载逻辑:
from dotenv import load_dotenv
load_dotenv()  # 加载.env文件中的环境变量

这样不管系统环境变量是否配置,Django都会优先读取.env里的配置,避免终端环境的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:10:25