Django Environ
django-environ упрощает работу с переменными окружения и следует принципам 12-factor app.
Установка
1# Установка пакета
2pip install django-environ
1# Или через Poetry
2poetry add django-environ
Настройка settings.py
1import environ
2
3env = environ.Env(
4 DEBUG=(bool, False)
5)
6
7# Чтение .env файла
8environ.Env.read_env()
9
10# Использование переменных
11DEBUG = env('DEBUG')
12SECRET_KEY = env('SECRET_KEY')
13DATABASE_URL = env('DATABASE_URL')
14
15DATABASES = {
16 'default': env.db()
17}
Файл .env
1DEBUG=True
2SECRET_KEY=your-secret-key-here
3DATABASE_URL=sqlite:///db.sqlite3
4REDIS_URL=redis://localhost:6379/0
5ALLOWED_HOSTS=localhost,127.0.0.1
6EMAIL_HOST=smtp.gmail.com
7EMAIL_PORT=587
Дополнительные типы
1# Список
2ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=[])
3
4# JSON
5LOGGING = env.json('LOGGING', default={})
6
7# URL
8REDIS_URL = env.url('REDIS_URL')
9
10# Email
11EMAIL_HOST = env.email('EMAIL_HOST')
Валидация переменных
1# Обязательные переменные
2SECRET_KEY = env('SECRET_KEY') # Вызовет ошибку, если не найдена
3
4# С значениями по умолчанию
5DEBUG = env.bool('DEBUG', default=False)
6PORT = env.int('PORT', default=8000)
FAQ
Q: Как установить значения по умолчанию?
A: Используй второй параметр в env() или default в Env().
Q: Можно ли использовать .env.local?
A: Да, создай .env.local для локальных настроек.