如何在VS Code中为Django指定不同环境的.env文件
Django多环境数据库连接配置与VS Code启动指定方案
完全可以通过多环境.env文件实现不同数据库的连接,并且在VS Code的launch.json里指定运行特定环境,具体操作步骤如下:
1. 创建多环境.env文件
在你的environments目录下分别创建dev.env、test.env、prod.env,每个文件对应不同环境的数据库配置,示例如下:
environments/dev.env
DATABASE_URL=mssql://DEV_USER:DEV_PWD@DEV_SERVER/DEV_DB DEBUG=True
environments/test.env
DATABASE_URL=mssql://TEST_USER:TEST_PWD@TEST_SERVER/TEST_DB DEBUG=False
environments/prod.env
DATABASE_URL=mssql://PROD_USER:PROD_PWD@PROD_SERVER/PROD_DB DEBUG=False
2. 修改settings.py支持动态加载指定.env文件
调整settings.py里的环境变量读取逻辑,让它可以根据环境变量指定的文件名加载对应配置:
import environ import os from pathlib import Path env = environ.Env( DEBUG=(bool, False) ) BASE_DIR = Path(__file__).resolve().parent.parent ENVIRONMENT_DIR = os.path.join(BASE_DIR, "environments") # 从环境变量获取要加载的.env文件名,默认加载dev.env env_file = os.getenv("ENV_FILE", "dev.env") environ.Env.read_env(os.path.join(ENVIRONMENT_DIR, env_file)) # 后续原有配置保持不变 ... DATABASES = { "default": env.db_url(), }
3. 配置VS Code的launch.json添加多环境启动项
在launch.json里为每个环境单独配置启动项,通过env参数指定要加载的.env文件名:
{ "version": "0.2.0", "configurations": [ { "name": "Django: Dev", "type": "python", "request": "launch", "program": "${workspaceFolder}/manage.py", "args": ["runserver"], "django": true, "env": { "ENV_FILE": "dev.env" } }, { "name": "Django: Test", "type": "python", "request": "launch", "program": "${workspaceFolder}/manage.py", "args": ["runserver"], "django": true, "env": { "ENV_FILE": "test.env" } }, { "name": "Django: Prod", "type": "python", "request": "launch", "program": "${workspaceFolder}/manage.py", "args": ["runserver"], "django": true, "env": { "ENV_FILE": "prod.env" } } ] }
运行方式
配置完成后,在VS Code的运行面板里,选择对应的环境(比如Django: Dev)启动项目,系统会自动加载对应环境的.env文件,连接指定的数据库。
内容的提问来源于stack exchange,提问作者Andez
相关产品推荐
相关产品推荐

