使用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 Validatortomlcheck工具到 验证toml文件。
  • 请确保所有smipleKEY = value对都在 根命名空间(位于任何[section]之上),这样它们就不会 吞没在地图或数组下。以前,我们有 已查看ImproperlyConfiguredError中缺少的键 实际上是在toml文件中定义的。

许可证

此项目的内容是根据apache许可证2.0授权的。请看 许可证文本完整副本的许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像