Как сделать так, чтобы изменения переменных в файле .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() - это значения обратного хода.

Вернуться на верх