部署至DigitalOcean后本地运行Django应用报DATABASE_URL未定义错误
解决本地Django开发时DATABASE_URL未定义的问题
找到settings.py中抛出异常的数据库配置代码段,替换为以下逻辑,通过DEVELOPMENT_MODE区分本地开发与生产环境:
# 确保已导入这些模块 import os from pathlib import Path # 保留你现有的环境变量配置 DEVELOPMENT_MODE = os.getenv("DEVELOPMENT_MODE", "False") == "True" DEBUG = os.getenv("DEBUG", "False") == "True" # 分环境配置数据库 if DEVELOPMENT_MODE: # 本地开发使用sqlite3 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } else: # 生产环境沿用原教程的DATABASE_URL配置 import dj_database_url DATABASES = { 'default': dj_database_url.config( default=os.environ.get('DATABASE_URL') ) } # 可选:保持生产环境数据库连接持久化 DATABASES['default']['CONN_MAX_AGE'] = 600
本地开发时启用DEVELOPMENT_MODE的两种方式
- 临时终端设置:
- Linux/macOS:
export DEVELOPMENT_MODE=True - Windows CMD:
set DEVELOPMENT_MODE=True - Windows PowerShell:
$env:DEVELOPMENT_MODE="True"
- Linux/macOS:
- 持久化配置(推荐):
- 安装依赖包:
pip install python-dotenv - 在项目根目录创建
.env文件,写入:DEVELOPMENT_MODE=True DEBUG=True - 在settings.py开头添加加载代码:
from dotenv import load_dotenv load_dotenv()
- 安装依赖包:
这样配置后,本地运行会自动使用sqlite3数据库,生产环境依然遵循原部署教程的配置,不会影响线上应用。
内容的提问来源于stack exchange,提问作者seedo13
相关产品推荐
相关产品推荐

