Django Postgres не считывает пароль БД из переменной среды

#django #postgresql #webfaction

#django #postgresql #webfaction

Вопрос:

Я установил переменную окружения для пароля БД в файле .bash_profile, но она не считывается полем ПАРОЛЯ PostgreSQL. Кроме того, я могу распечатать пароль в рабочей среде.py-файл успешно, но он не будет использоваться PostgreSQL.

 DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '********_db',
    'USER': '*****_name',
    'PASSWORD':os.environ.get("RS_DB_PWD"),
}
#The below will show the password correctly.
print(os.environ.get("RS_DB_PWD"))
  

Комментарии:

1. Итак, когда вы настраиваете PASSWORD для os.environ.get("RS_DB_PWD") возвратов None базы данных?

2. DATABASES Каким-то образом перезаписывается в production.py (я предполагаю, что вы разбиваете настройки на разные модули, такие как settings/base.py , settings/development.py и settings/production.py .

3. @xbound, это просто выдаст ошибку «пароль не указан». Это означает, что он не может получить значение get из переменной окружения.

4. Возможно, в этом нет необходимости, но попробуйте импортировать его в какую-нибудь переменную, например, DB_PASSWORD = os.environ.get("RS_DB_PWD") в вашем production.py файле, а затем передать его 'PASSWORD': DB_PASSWORD,

5. @xbound, я пытался использовать теорию DB_PASSWORD, но, к сожалению, это не сработало.

Ответ №1:

Я бы постарался избежать объявления переменных в .bash_profile и вместо этого создал бы .env файл внутри вашего проекта (добавьте его .gitignore , если вы используете git), куда вы поместите все свои секретные переменные и используйте инструмент вроде Python-Decouple или Dynaconf для их чтения из .env .