python - 如何从本地文件导入环境变量到Django

标签 python django environment-variables

我正在准备我的第一个专业 Django 项目的生产,但我在使用环境变量来保护应用程序方面遇到了问题。到目前为止,我已经设法创建了一个本地文件来存储我电脑上的所有变量...

环境变量.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 可以访问这些信息,无论它在我本地电脑上的什么位置。如果我错了,请纠正我。

settings.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,但是当我将 key 直接放入 settings.py 文件时它起作用了。我相信我在这里错过了一些步骤。我见过其他 python 编码器能够做到这一点,而不必使用 django-environ 或其他包之类的东西。如果有人可以提供帮助,我们将不胜感激,因为我想为我的所有项目都这样做。

编辑 我的 Procfile 的 gunicorn 是 web: gunicorn project_name.wsgi 我没有修改我的 wsgi 文件。

最佳答案

我建议您使用 django-environ配置您的应用程序。 将所有配置值保存在一个单独的文件中,比如 .env - 这不应该添加到 repo。

.env

AWS_ACCESS_KEY_ID = "access_key"
AWS_SECRET_ACCESS_KEY = "secret_key"
AWS_STORAGE_BUCKET_NAME = "bucket_name"

现在在您的 Django settings.py 中加载 env 文件并使用相应的 key 。

settings.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')

关于python - 如何从本地文件导入环境变量到Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56011050/

相关文章:

python - 如何使用 apache 和 mod_wsgi 部署 django 应用程序,以便在输入服务器地址时可以看到网站?

go - 如何在OSX上获取os env变量?

java - Java Maven 项目中 Jenkins 中带点的环境变量

python - Django - 当我扩展 index.html 时,我没有得到变量

python - 尝试使用 skimage.transform 在 Python 中旋转一张简单的图片

python - 在 python 中执行代码时如何更改 URL 中的脚本名称

python - 使用 PyInstaller 2.1 和 MEIPASS 错误捆绑数据文件 --onefile

python - 如何定义读取字符串元组的函数

sql - 完整性错误 : foreign key violation upon delete

python - Django:如何正确制作购物车? (数组字符串字段)