当使用诸如Git或SVN的VCS时,某些机密数据绝不能进行版本控制(无论存储库是公共的还是私有的)。
在这些数据中,您可以找到SECRET_KEY设置和数据库密码。
从版本控制中隐藏这些设置的一种常见做法是secrets.json在项目的根目录下创建一个文件(这个想法要感谢“ Django的两个勺子”):
{
"SECRET_KEY": "N4HE:AMk:.Ader5354DR453TH8SHTQr",
"DB_PASSWORD": "v3ry53cr3t"
}并将其添加到您的忽略列表(.gitignore对于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'),
},
}鸣谢:Daniel的两个独家报道:Django 1.8的最佳实践,作者Daniel Roy Greenfeld和Audrey RoyGreenfeld。版权所有2015 Two Scoops Press(ISBN 978-0981467344)