0

0

如何在 Django 项目中正确加载并实时生效 .env 环境变量

心靈之曲

心靈之曲

发布时间:2026-02-23 10:25:13

|

738人浏览过

|

来源于php中文网

原创

如何在 Django 项目中正确加载并实时生效 .env 环境变量

本文详解 django 项目中通过 django-environ 加载 .env 文件的完整流程,涵盖环境配置、变量读取、服务重启要点及常见失效原因,确保修改后立即生效。

本文详解 django 项目中通过 django-environ 加载 .env 文件的完整流程,涵盖环境配置、变量读取、服务重启要点及常见失效原因,确保修改后立即生效。

Django 本身不原生支持 .env 文件,因此仅将变量写入 .env 并重启开发服务器(如 python manage.py runserver)是无效的——Django 不会自动读取或解析该文件。要使 .env 中的变量真正生效,必须借助第三方库(如 django-environ)显式加载,并确保加载时机正确、路径准确、值被合理引用。

✅ 正确配置步骤

  1. 安装依赖

    pip install django-environ
  2. 在 settings.py 中初始化环境读取
    在 BASE_DIR 定义之后、任何使用环境变量之前(推荐紧接其后),添加以下代码:

    import os
    import environ
    
    # 初始化 environ 实例
    env = environ.Env()
    # 从项目根目录下的 .env 文件读取变量(注意:路径需准确)
    environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

    ⚠️ 注意:os.path.join(BASE_DIR, '.env') 是标准做法;若 .env 位于其他位置(如与 manage.py 同级),请相应调整路径,例如 os.path.join(BASE_DIR, '..', '.env'),并确保路径存在且可读。

    Rezi.ai
    Rezi.ai

    一个使用 AI 自动化创建简历平台

    下载
  3. 安全读取变量并设置默认值
    使用 env('KEY', default='fallback') 或 os.environ.get() 均可,但推荐 env() ——它支持类型转换(如 env.bool('DEBUG', default=False))和更清晰的错误提示:

    DEBUG = env.bool('DEBUG', default=False)
    SECRET_KEY = env('SECRET_KEY', default='insecure-key-for-dev')
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': env('DB_NAME'),
            'USER': env('DB_USER'),
            'PASSWORD': env('DB_PASSWORD'),
            'HOST': env('DB_HOST', default='localhost'),
            'PORT': env.int('DB_PORT', default=5432),
        }
    }

? 为什么重启后仍不生效?关键排查点

  • 未真正重启服务:Django 开发服务器启用 --reload(默认开启)时,仅监视 Python 文件变更,不会监听 .env 文件变化。务必手动终止进程(Ctrl+C)并重新运行 python manage.py runserver。
  • 缓存干扰:Django 的模板、数据库查询等缓存不影响环境变量读取,clear_cache 命令与此无关;但若使用了 django-compressor 或自定义配置缓存,请确认其未固化旧配置。
  • 多环境覆盖:检查是否在 settings.py 后续逻辑中硬编码覆盖了环境变量(如 DEBUG = True),导致 .env 设置被忽略。
  • 权限与路径错误:运行命令的用户需有读取 .env 的权限;使用 print(os.path.exists(...)) 验证路径是否存在。

✅ 验证是否加载成功(调试建议)

在 settings.py 底部临时添加:

print("✅ Loaded DB_NAME:", env('DB_NAME', default='[NOT SET]'))
print("✅ DEBUG is:", DEBUG)

启动服务时观察终端输出,确认值符合预期。

? 最佳实践总结

  • 将 .env 文件加入 .gitignore,杜绝敏感信息泄露;
  • 生产环境应使用系统级环境变量(如 export DB_NAME=prod_db),而非 .env 文件;
  • 对关键变量(如 SECRET_KEY, DEBUG)始终提供安全默认值或强制校验(env('SECRET_KEY') 抛异常若缺失);
  • 使用 env.db_url() 可直接解析 DATABASE_URL=postgresql://... 格式,简化数据库配置。

完成上述配置后,每次修改 .env 文件,只需彻底重启 Django 开发服务器,新值即可即时生效——无需额外缓存清理或复杂钩子。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

125

2026.02.04

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

13

2026.02.03

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

13

2026.02.03

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

313

2025.07.15

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

230

2023.12.07

postgresql常用命令
postgresql常用命令

postgresql常用命令psql、createdb、dropdb、createuser、dropuser、l、c、dt、d table_name、du、i file_name、e和q等。本专题为大家提供postgresql相关的文章、下载、课程内容,供大家免费下载体验。

163

2023.10.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 5.5万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号