Python,Django-访问settings.py中的环境变量
在我的项目中,我想用python/Django发送一封电子邮件。为了做到这一点,我需要指定多个设置,其中之一是我的电子邮件密码。我想从环境变量中检索它 当我在settings.py中引用环境变量时,会收到一条消息,暗示该值错误,而不是我的实际密码。我确保在bash_profile中将环境变量设置为我的实际密码,并且当我在设置文件中硬编码我的密码时,电子邮件成功发送 这意味着在尝试将密码作为环境变量检索时出现问题 设置.py:Python,Django-访问settings.py中的环境变量,python,django,Python,Django,在我的项目中,我想用python/Django发送一封电子邮件。为了做到这一点,我需要指定多个设置,其中之一是我的电子邮件密码。我想从环境变量中检索它 当我在settings.py中引用环境变量时,会收到一条消息,暗示该值错误,而不是我的实际密码。我确保在bash_profile中将环境变量设置为我的实际密码,并且当我在设置文件中硬编码我的密码时,电子邮件成功发送 这意味着在尝试将密码作为环境变量检索时出现问题 设置.py: import os # me trying to retrieve p
import os
# me trying to retrieve password
EMAIL_HOST_PASSWORD = os.environ.get('email_password')
有人知道这个问题吗?多谢各位
我确保在bash_概要文件中将环境变量设置为我的实际密码
如果您遵循最佳实践并在虚拟环境中运行Django,那么它有一组不同的环境变量。我怀疑如果您将设置更改为os.environ['email\u password']
,您将得到一个KeyError
,因为该环境变量未设置
导出环境变量的方法有很多,但为了向自己证明这就是问题所在,请在启用虚拟环境的情况下在命令行中导出值,然后运行项目并尝试发送电子邮件
编辑
由于您使用的是pipenv,您只需在项目的根目录中添加一个.env文件,当您激活虚拟环境时,pipenv将自动为您设置这些环境变量
.env
SECRET_KEY=asolidsecretkey
email_password=somesecurepassword
...
我正在使用一个虚拟环境(pipenv)的方法工作!在命令行中键入时,电子邮件被发送。但是我如何永久设置此环境变量而不必在命令行中输入?您能否提供至少一种使用Django执行此操作的方法?谢谢。但是当我使用os.environ['email_password']时,它也能很好地工作。没有键错误。我可以用这个方法代替吗?