Python, Django - Доступ к переменным окружения в settings.py - PullRequest
2 голосов
/ 22 февраля 2020

В рамках моего проекта я хочу отправить электронное письмо с python / Django. Для этого мне нужно указать несколько настроек, и одна из них - это пароль для моей электронной почты. Я хочу получить это из переменной среды.

Когда я ссылаюсь на переменную среды в settings.py, я получаю сообщение о том, что значение неверно, а не мой действительный пароль. Я удостоверился, что для переменной среды задан мой действительный пароль в bash_profile, и когда я жестко закодировал свой пароль в файле настроек, электронная почта отправляется успешно.

Это означает, что проблема возникает при попытке восстановить пароль в качестве переменной среды.

SETTINGS.py :

import os
# me trying to retrieve password
EMAIL_HOST_PASSWORD = os.environ.get('email_password')

Кто-нибудь знает проблему? Спасибо.

1 Ответ

3 голосов
/ 22 февраля 2020

Я гарантировал, что для переменной среды задан мой фактический пароль в bash_profile

Если вы следуете рекомендациям и запускаете Django в виртуальной среде, он имеет другой набор переменных среды. Я подозреваю, что если вы измените настройку на os.environ['email_password'], вы получите KeyError, потому что эта переменная окружения не задана.

Существует несколько способов экспортировать переменные среды, но просто доказать самим себе что это проблема, экспортируйте значение прямо в командной строке с включенной виртуальной средой, затем запустите ваш проект и попробуйте отправить электронное письмо.

Редактировать

Так как вы используете pipenv, вы можете просто добавить файл .env в root вашего проекта, и pipenv автоматически установит эти переменные окружения для вас, когда вы активируете виртуальную среду.

. env

SECRET_KEY=asolidsecretkey
email_password=somesecurepassword
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...