Охватываемые темы: Зачем переменные окружения, python-dotenv, django-environ (альтернатива), .gitignore.
Зачем переменные окружения
- Секреты (SECRET_KEY, пароли) не попадают в git
- Разные настройки для dev/prod без изменения кода
python-dotenv
pip install python-dotenv
# .env (в корне проекта, НЕ коммитить)
SECRET_KEY=django-insecure-abc123
DEBUG=True
DATABASE_URL=sqlite:///db.sqlite3
ALLOWED_HOSTS=localhost,127.0.0.1
# settings.py
from pathlib import Path
from dotenv import load_dotenv
import os
load_dotenv()
SECRET_KEY = os.environ.get('SECRET_KEY')
DEBUG = os.environ.get('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')
django-environ (альтернатива)
pip install django-environ
import environ
env = environ.Env()
environ.Env.read_env('.env')
DEBUG = env.bool('DEBUG', default=False)
SECRET_KEY = env.str('SECRET_KEY')
DATABASES = {'default': env.db('DATABASE_URL')}
.gitignore
.env
*.env
.env.local
.env.example (шаблон для команды)
# .env.example — коммитится в репозиторий
SECRET_KEY=your-secret-key-here
DEBUG=True
DATABASE_URL=sqlite:///db.sqlite3
ALLOWED_HOSTS=localhost
Проверка в prod
# Railway, Heroku, Docker: переменные задаются в платформе
# Не нужен .env файл на сервере
export SECRET_KEY="production-secret"
export DEBUG="False"
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!