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

致謝: Django 的兩個獨家:Django 1.8 的最佳實踐,Daniel Roy Greenfeld 和 Audrey RoyGreenfeld。版權所有 2015 Two Scoops Press(ISBN 978-0981467344)