Django 使用JSON文件隐藏秘密数据
示例
当使用诸如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的两个独家报道:Django1.8的最佳实践,作者DanielRoyGreenfeld和AudreyRoyGreenfeld。版权所有2015TwoScoopsPress(ISBN978-0981467344)