Django可组合设置加载器。
项目描述
旨在从python模块和位于/etc中的python脚本中组合您的设置。
在您的 my_app/settings/__init__.py 中调用加载器
from django_compose_settings import modules_loader locals().update(modules_loader(prefix='my_app', default='base,etc,post'))
在 my_app/settings/base.py 中定义默认值,例如
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # ...
在 my_app/settings/etc.py 中调用etc加载器
from django_compose_settings import etc_loader locals().update(etc_loader(prefix='my_app'))
您可以在 my_app/settings/post.py 中按如下方式验证设置
import __settings__ assert hasattr(__settings__, 'BASE_DIR'), 'BASE_DIR required'
Etc设置
以下是您的 /etc/my_app 的一个示例树结构
/etc/my_app/ ├── settings.d │ ├── 00_prod1.py │ └── 99_local.py └── settings.py
每个 .py 文件都是一个如上所述的常规 可组合 设置文件。
MY_APP_SETTINGS
您可以通过为您的应用程序设置特定的SETTINGS环境变量来覆盖您的设置,如下所示
$ MY_APP_SETTINGS=base,post python >>> import logging >>> logging.basicConfig( ... level=logging.INFO, ... format='%(asctime)s %(levelname)-8s %(name)s %(message)s' ... ) >>> import os >>> import sys >>> sys.path.append(os.path.join(os.path.abspath('tests'), 'fixtures')) >>> from my_app import settings 2015-11-23 10:59:09,964 INFO django_compose_settings Loaded my_app.settings.base 2015-11-23 10:59:09,964 INFO django_compose_settings Loaded my_app.settings.post