我正在准备我的第一个专业 Django 项目的生产,但我在保护应用程序的环境变量方面遇到了问题。到目前为止,我已经成功创建了一个本地文件来存储我的电脑上的所有变量......
env_variables.py
import os
db_user = os.environ.get('db_user')
db_password = os.environ.get('db_password')
# AWS DJANGO
export AWS_ACCESS_KEY_ID = "access_key"
export AWS_SECRET_ACCESS_KEY = "secret_key"
export AWS_STORAGE_BUCKET_NAME = "bucket_name"
print(db_user)
print(db_password)
我使用环境设置(Windows)来创建用户名和密码。当我运行该文件时,它们起作用了。我正在使用我的 AWS 凭证来测试这一点。我一直认为 Django 可以访问这些信息,无论它在我本地电脑的哪个位置。如我错了请纠正我。
设置.py
...
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
...
我知道 Django 没有访问此文件,因为我的所有媒体文件都得到 400,但当我将密钥直接放入 settings.py 文件中时它就可以工作。我相信我在这里遗漏了几个步骤。我见过其他 python 编码器能够做到这一点,而无需使用 django-environ 或其他包之类的东西。如果有人可以提供帮助,我将不胜感激,因为我想为我的所有项目这样做。
Edit我的Procfile的gunicorn是web: gunicorn project_name.wsgi
我没有修改我的 wsgi 文件。
我建议你使用Django 环境 https://github.com/joke2k/django-environ配置您的应用程序。
将所有配置值保存在一个单独的文件中,例如.env- 不应将其添加到存储库中。
.env
AWS_ACCESS_KEY_ID = "access_key"
AWS_SECRET_ACCESS_KEY = "secret_key"
AWS_STORAGE_BUCKET_NAME = "bucket_name"
现在在你的 Django 中设置.py加载 env 文件并使用相应的密钥。
设置.py
import environ
env = environ.Env()
env.read_env(env.str('ENV_PATH', '/path/to/.env'))
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)