通过配置加载ini文件的flask扩展名

Flask-INIConfig的Python项目详细描述


Overview

Flask-INIConfig是一个Flask扩展,它将两个附加方法from_inifilefrom_inifile_sections添加到应用程序的Flask.config配置实例中。这允许您将ini文件或节从ini文件直接加载到config对象中。

Installation

使用pip

安装扩展
$ pip install flask-iniconfig

easy_install

$ easy_install flask-iniconfig

Usage

Basic Usage

您可以通过调用扩展的构造函数来初始化它:

fromflaskimportFlaskfromflask.ext.iniconfigimportINIConfigapp=Flask(__name__)INIConfig(app)# or use the init_app form# INIConfig().init_app(app)app.config.from_inifile('/path/to/file.ini')property=(app.config.get('section')or{}).get('property')

重要

  • 属性名和节名区分大小写
  • 通常,configparser会将设置和属性名规范化为小写,但是对于扩展所使用的实例,这将被关闭。

^{tt1}$

当在ini文件中使用from_inifile节时,它们是config对象中的单个属性。例如,如果您有以下内容:

[section]a_property=1

您可以使用:

app.config.from_inifile('/path/to/file.ini')

您可以通过以下方式访问:

section=current_app.config.get('section')property=section['a_property']

v0.0.8开始,如果您向from_inifile提供一个名为objectify的标志,它将把节作为实例变量添加到配置对象中。然后您可以使用:

app.config.from_inifile('/path/to/file.ini',objectify=True)

它将允许您以:

section=current_app.config.sectionproperty=section['a_property']

重要

  • 关于节名,请非常小心,以免与内置成员发生冲突,因为app.config只是一个dict。
  • 这些节实例变量是普通字典。它们本身不是对象。

有一个专门用于Flask应用程序的部分,名为flask,可用于指定应用程序属性。因此,如果您有以下信息:

[flask]DEBUG=1

您可以使用current_app.config['DEBUG'],而不必指定节。烧瓶部分中的所有属性名称都转换为大写,就像from_inifile_sections中那样,但仅适用于烧瓶部分。

^{tt2}$

使用from_inifile_sections时,只有相关节和flask节(如果存在)从ini文件加载。另一个主要区别是,所有属性都附加到app.config对象上,而不是app.config具有节名称的属性。

此外,所有属性名都转换为大写,因为大多数扩展名和flask的内部configuration properties都是大写的。

唯一的异常是当您向此方法提供preserve_case标志时。当给定此值时,将保留所有非烧瓶选项的大小写。烧瓶选项仍将转换为大写。这允许您将sqlalchemyengine_from_config直接用于config对象。

如果您有一个ini文件,其中包含开发、登台、生产和测试设置,则这非常有用。您只能加载所需的文件,然后烧瓶可以直接使用这些文件。

例如,如果您有以下物品:

[flask]DEBUG=1[common]a=1b=0[dev]b=2[prod]b=3

您可以使用:

app.config.from_inifile_sections('/path/to/file.ini',['common','dev'])

将属性AB添加到app.config

注意

此特定方法不加载未指定的节。在r4372a8e之前,情况并非如此,有时会导致插值出现问题。

Customizing SafeConfigParser

如果要自定义内部SafeConfigParser的工作方式,可以使用RawConfigParser构造函数文档中指定的参数。

例如:

INIConfig(app,defaults={...},dict_type=OrderedDict,allow_no_value=True)

Implementation Details

实现扩展的基类是从SafeConfigParser派生的,用于加载ini文件。因此,您将获得内置的解析和插值capa分析器的功能。

因为SafeConfigParser不会自动将值强制为适当的类型,Flask-INIConfig会尽量为您执行一些操作。以下转换尝试按优先顺序进行:

注意

  • 您不能直接访问解析器实例,但是构造器将接受SafeConfigParser的参数并将它们传递出去。
  • 扩展偏离了SafeConfigParser对布尔值的处理,因为对int的类型强制发生在对boolean的类型强制之前。因此,如果您想要布尔值,请将其设置为yes, no, on, off, true or false中的一个。

警告

扩展不尝试将值强制为已在应用程序配置中指定的键的类型。因此,如果要重写ini文件中的配置属性,则需要注意实际类型。

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

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen