使用 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'),
},
}