使用 JSON 文件隐藏机密数据
当使用诸如 Git 或 SVN 之类的 VCS 时,有些秘密数据必须永远不会被版本化(无论存储库是公共的还是私有的)。
在这些数据中,你可以找到 SECRET_KEY
设置和数据库密码。
从版本控制中隐藏这些设置的常见做法是在项目的根目录下创建一个文件 secrets.json
( 感谢“ 两个 Django 的 Scoops ” ):
{
"SECRET_KEY": "N4HE:AMk:.Ader5354DR453TH8SHTQr",
"DB_PASSWORD": "v3ry53cr3t"
}
并将其添加到你的忽略列表(.gitignore
for git):
*.py[co]
*.sw[po]
*~
/secrets.json
然后将以下函数添加到 settings
模块:
import json
import os
from django.core.exceptions import ImproperlyConfigured
with open(os.path.join(BASE_DIR, 'secrets.json')) as secrets_file:
secrets = json.load(secrets_file)
def get_secret(setting, secrets=secrets):
"""Get secret setting or fail with ImproperlyConfigured"""
try:
return secrets[setting]
except KeyError:
raise ImproperlyConfigured("Set the {} setting".format(setting))
然后以这种方式填充设置:
SECRET_KEY = get_secret('SECRET_KEY')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgres',
'NAME': 'db_name',
'USER': 'username',
'PASSWORD': get_secret('DB_PASSWORD'),
},
}