#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
.