Как сделать так, чтобы изменения переменных в файле .env отражались в проекте Django?
Я столкнулся с проблемой в своем проекте Django, когда изменения, внесенные в переменные в .env-файле, не отражаются при перезапуске сервера.
Вот шаги, которые я предпринял:
- Убедитесь, что файл .env находится в правильном месте и его имя точно соответствует .env.
- Перезапустите сервер разработки Django после внесения изменений в файл .env.
- Дважды проверил синтаксис файла .env на наличие ошибок и опечаток.
- Очистите кэш после внесения изменений в файл .env (используя
python manage.py clear_cache
)
Используете ли вы какие-нибудь пакеты для поддержки .env
файлов; например django-environ?
Если нет, пожалуйста, установите пакет и добавьте код, подобный этому, после установки BASE_DIR
в файл settings.py:
# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
После этого вы можете проверить значения, загруженные успешно, как print(os.environ.get("DB_NAME"))
и, наконец, вы можете использовать переменные окружения для ваших настроек:
DATABASES = {
"default": {
"ENGINE": 'django.db.backends.mysql',
"NAME": os.environ.get("DB_NAME", "db_name"),
"USER": os.environ.get("DB_USER", "db_user"),
"PASSWORD": os.environ.get("DB_PASSWORD", "db_password"),
"HOST": os.environ.get("DB_HOST", "localhost"),
"PORT": os.environ.get("DB_PORT", "3306"),
}
}
Второй параметр из os.environ.get()
- это значения обратного хода.