跳转到主要内容

Django 使用 TOML 配置文件的设置。

项目描述

此项目用于使用 Django 项目使用 Toml 配置文件进行配置。此项目选择 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

变量替换

值可以使用 ${VAR} 语法引用同一文件中定义的其他键。例如

# /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验证器tomlcheck工具来验证TOML文件。

  • 请确保所有简单的KEY = value对都在根命名空间中(在任意的[section]之上),以免它们被某个映射或数组吞没。之前,我们已经看到了因为缺少在TOML文件中实际已定义的键而出现的ImproperlyConfiguredError错误。

许可证

本项目的所有内容均受Apache License 2.0许可。请参阅LICENSE文件以获取许可证文本的完整副本。

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

django-settings-toml-0.0.4.tar.gz (9.3 kB 查看哈希)

上传时间 源代码

由以下提供支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页