使用toml配置文件的django设置。
django-settings-toml的Python项目详细描述
此项目用于使用Toml配置文件配置Django项目。这个项目选择toml而不是其他配置语言,因为它的简单性和小规格。它更容易理解,看起来非常像ini样式的配置。无法使用ini样式,因为很难重新发送字典和列表等数据结构,而且不支持嵌套。
更改日志
0.0.4
- 在地图和列表中添加对替换的支持。
- 修复在v0.0.3中导致typeerror的值为非字符串的加载设置。
0.0.3
- 修复新版本的包装。
0.0.2
- 在值中使用${VAR}语法添加对变量替换的支持。
用法
要在django项目中使用此功能,请将以下内容添加到settings.py文件中:
# settings.py from django_settings_toml import load_settings load_settings(__name__, ['/etc/project.toml', '~/.project.toml'])
然后,您可以像这样运行django项目:
$ DJANGO_SETTINGS_MODULE=project.settings django-admin runserver
变量替换
值可以引用在同一文件中使用^{tt1}定义的其他键$ 语法。例如:
# /etc/project.toml HOSTNAME = 'domain.local' EMAIL1 = 'aperson@${HOSTNAME}' EMAIL2 = 'bperson@${HOSTNAME}'
在上面的示例中,EMAIL1 = 'aperson@domain.local和 类似于EMAIL2。
如果引用的变量未定义,则模板为 保持原样,不会产生任何错误。例如,在上面的例子中,如果 HOSTNAME未定义,值将为EMAIL1 = 'aperson@${HOSTNAME}。
示例设置
# /etc/project.toml # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'change-this-on-your-production-server' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = false ADMINS = [ ['Mailman Suite Admin', 'root@localhost'], ] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_q', 'allauth', ] MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', ] ROOT_URLCONF = 'project.urls' WSGI_APPLICATION = 'project.wsgi.application' HOSTNAME = 'project.local' EMAIL_NAME = 'project1@${HOSTNAME}' [DATABASES.default] ENGINE = 'django.db.backends.sqlite3' NAME = 'mailmansuite.db' [LOGGING] version = 1 disable_existing_loggers = false [LOGGING.filters.require_debug_false] '()' = 'django.utils.log.RequireDebugFalse' [LOGGING.handlers.mail_admins] level = 'ERROR' filters = ['require_debug_false'] class = 'django.utils.log.AdminEmailHandler' [LOGGING.handlers.file] level = 'INFO' class = 'logging.handlers.WatchedFileHandler' filename = 'logs/mailmansuite.log' formatter = 'verbose' [LOGGING.loggers."django.request"] handlers = ['mail_admins', 'file'] level = 'ERROR' propagate = true [LOGGING.formatters.verbose] format = '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'
有问题
- 请确保您有一个有效的toml,您可以使用 TOML Validator或 tomlcheck工具到 验证toml文件。
- 请确保所有smipleKEY = value对都在 根命名空间(位于任何[section]之上),这样它们就不会 吞没在地图或数组下。以前,我们有 已查看ImproperlyConfiguredError中缺少的键 实际上是在toml文件中定义的。
许可证
此项目的内容是根据apache许可证2.0授权的。请看 许可证文本完整副本的许可证文件。