使用环境变量
解决这个问题最常见的方法是使用环境变量。
例如,在 Django 应用程序的 settings.py 中,您可以编写以下内容:
import os
if os.getenv("DJANGO_DEBUG") == '1':
DEBUG = True
API 密钥也非常相似:
import os
API_KEY = os.getenv("API_KEY", None)
另一种方法是使用django-environ package https://github.com/joke2k/django-environ被建议者翻转PA https://stackoverflow.com/questions/45250494/storing-config-in-environment-python-django/45250838#comment77504811_45250838。它的灵感来自 12factor,所以它似乎非常适合这个问题。
如果您使用 Heroku 进行部署,那么您可以在设置下为每个 dyno 编写自己的环境变量。如果您使用其他部署方法(例如 AWS CodeDeploy),您可以编写 shell 脚本来设置环境变量,方法是从安全存储(例如 AWS参数存储 http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html)
设置环境变量
设置这些环境变量取决于您的操作系统。环境变量也是从命令行继承的,因此对于 Linux,您必须将环境变量添加到运行脚本中,而在 Windows 上,您可以添加系统变量。
Windows系统环境变量(通用可访问的环境变量):
setx API_KEY abcdefghijklmnopqrstuvwxyz123
Windows临时环境变量(运行此命令后调用的所有进程都可以访问该变量):
set API_KEY abcdefghijklmnopqrstuvwxyz123
Linux中为所有进程添加环境变量比较复杂,如下this https://unix.stackexchange.com/a/117470答案是在 shell 启动时自动设置环境变量。
Linux临时环境变量(运行该命令后调用的所有进程都可以访问该变量):
export API_KEY="abcdefghijklmnopqrstuvwxyz123"
测试环境变量
要测试环境变量集,您可以使用以下命令(将“API_KEY”替换为变量名称):
Windows:
echo %API_KEY%
Linux:
echo $API_KEY
如果这些返回的内容与您输入的内容相同,那么它应该可以工作。您可以通过键入以下内容在 python 中尝试:
python
然后您应该看到类似以下内容:
Python 3.6.2 (default, Jul 17 2017, 16:44:45)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
然后你可以编写你的 python 来测试它:
import os
os.getenv("API_KEY")
您应该会看到打印出环境变量的值。