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

部署Django至DigitalOcean Apps后本地无法运行,该如何解决?

解决本地Django应用缺少DATABASE_URL环境变量的问题

方案一:用python-dotenv管理本地环境变量

  • 安装依赖:pip install python-dotenv
  • 在项目根目录创建.env文件,写入本地数据库连接地址,示例:
    # SQLite示例
    DATABASE_URL=sqlite:///db.sqlite3
    # PostgreSQL示例
    # DATABASE_URL=postgres://用户名:密码@localhost:5432/数据库名
    
  • 在settings.py的最顶部添加代码,加载本地环境变量:
    import os
    from dotenv import load_dotenv
    
    load_dotenv()  # 自动读取项目根目录的.env文件
    
  • 本地运行时会自动加载.env里的配置,部署到DigitalOcean时,平台会自动注入生产环境的DATABASE_URL,两者互不冲突

方案二:区分本地与生产环境配置

如果不想用dotenv工具,可以直接在settings.py里做环境判断:

  • 修改数据库配置代码,优先加载本地开发配置:
    import os
    import dj_database_url
    import sys
    
    # 本地开发环境(DEBUG为True时触发)
    if os.getenv('DEBUG', 'False') == 'True':
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': BASE_DIR / 'db.sqlite3',
            }
        }
    # 生产环境(DigitalOcean)
    elif len(sys.argv) > 0 and sys.argv[1] != 'collectstatic':
        if os.getenv("DATABASE_URL", None) is None:
            raise Exception("DATABASE_URL environment variable not defined")
        DATABASES = {
            "default": dj_database_url.parse(os.environ.get("DATABASE_URL")),
        }
    
  • 本地运行时,通过命令行临时设置DEBUG变量:
    Linux/macOS:DEBUG=True python manage.py runserver
    Windows命令行:set DEBUG=True && python manage.py runserver

关键注意事项

  • .env文件要加入.gitignore,防止本地数据库密码等敏感信息被提交到代码仓库
  • DigitalOcean App平台的生产环境配置无需修改,平台会自动维护DATABASE_URL变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:16:08