Django-environ 入门教程
Django-environ 入门教程
Django-environ 是一个帮助 Django 项目管理环境变量的库,它可以简化 .env
文件的管理,并集中处理敏感配置如数据库连接、API 密钥等。
安装
首先安装 django-environ:
pip install django-environ
基本配置
1. 创建 .env 文件
在 Django 项目的根目录(manage.py 同级)创建 .env 文件:
DEBUG=on
SECRET_KEY=your-secret-key
DATABASE_URL=psql://user:password@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db
CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213
REDIS_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient&password=secret
2. 修改 settings.py
在 Django 的 settings.py 文件中进行以下修改:
import environ# 初始化 environ
env = environ.Env()# 从 .env 文件读取环境变量
environ.Env.read_env()# 使用环境变量
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')# 数据库配置
DATABASES = {'default': env.db(),'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db'),
}# 缓存配置
CACHES = {'default': env.cache(),'redis': env.cache('REDIS_URL'),
}
高级用法
类型转换
django-environ 会自动转换类型:
DEBUG = env.bool('DEBUG', default=False) # 转换为布尔值
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=['localhost']) # 转换为列表
PORT = env.int('PORT', default=8000) # 转换为整数
默认值和必填项
# 如果没有设置会抛出异常
REQUIRED_SETTING = env('REQUIRED_SETTING')# 使用默认值
OPTIONAL_SETTING = env('OPTIONAL_SETTING', default='default_value')
使用 .env 以外的文件
在这里插入代码片
env = environ.Env()
environ.Env.read_env('/path/to/other/.env') # 指定其他路径的 .env 文件
在模板中使用环境变量
# settings.py
TEMPLATES = [{# ...'OPTIONS': {'context_processors': [# ...'django.template.context_processors.request','yourapp.context_processors.expose_env',],},},
]# yourapp/context_processors.py
from django.conf import settingsdef expose_env(request):return {'ENV_DEBUG': settings.DEBUG,'ENV_VERSION': settings.VERSION,}