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

Windows环境下Django无法读取DJANGO_DEVELOPMENT_MODE环境变量求助

解决Django无法读取Windows环境变量DJANGO_DEVELOPMENT_MODE的问题

问题背景

部署Django到DigitalOcean App Platform时采用官方示例的settings.py配置,在Windows开发环境中已设置DJANGO_DEVELOPMENT_MODE用户及系统环境变量,但启动开发服务器时仍进入生产分支,抛出DATABASE_URL environment variable is not set异常。Python shell中能正常读取该变量,但Django进程无法获取。

解决方案

1. 重启终端/开发环境

Windows系统中,新设置的环境变量不会自动加载到已打开的终端或IDE进程中。必须重启你的终端(CMD/PowerShell)或开发工具(VS Code、PyCharm等),再重新运行python manage.py runserver。

2. 终端会话临时设置变量

如果不想重启终端,可以在当前会话中直接设置变量:

  • CMD中执行:
    set DJANGO_DEVELOPMENT_MODE=True
    
  • PowerShell中执行:
    $env:DJANGO_DEVELOPMENT_MODE = "True"
    

执行完后在同一个终端内启动Django服务器。

3. 优化settings.py中的变量判断逻辑

Windows环境变量的读取可能存在大小写或空格问题,修改判断语句为更鲁棒的写法:

import os
import sys
...
# Database配置部分修改为:
if os.getenv('DJANGO_DEVELOPMENT_MODE', 'False').strip().lower() == 'true':
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
elif len(sys.argv) > 0 and sys.argv[1] != 'collectstatic':
    if os.getenv('DATABASE_URL', None) is None:
        raise Exception('DATABASE_URL environment variable is not set')
    DATABASES = {
        'default': dj_database_url.parse(os.environ.get('DATABASE_URL')),
    }

这种写法能兼容变量值为True、true、TRUE甚至带空格的True等情况。

4. 检查IDE运行配置

如果使用IDE启动Django,需确认IDE的运行配置中:

  • 没有手动覆盖DJANGO_DEVELOPMENT_MODE变量
  • 已勾选"继承系统环境变量"选项(不同IDE位置不同,比如PyCharm在"Run/Debug Configurations"的"Environment variables"中)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:45:24