通过配置加载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 OpenShift的齿轮特性   java如何在Liferay站点的每个页面上放置公司地址和电话?   java确定整数数组中是否存在一个子集,在两个条件下求和到给定的目标值   序列化为什么java中的serialVersionUID必须是静态的、最终的、长类型的?   java响应返回null   java注入接口实现Quarkus   java我不明白为什么第二次排序的运行时间比第一次慢?   (Java)显示图像的最佳方式?   java Android应用程序因添加布局而崩溃   java如何在运行时获取泛型变量的类   java Selenium web驱动程序:无效的选择器:*:WebKitFullScreenSentor   Spring中的java注入值始终为空   Eclipse中带有TestNG插件的@BeforeSuite和@AfterSuite的java问题   使用trycatch块、filewriter和printwriter在java中创建自定义类   如何在Java 安卓上绘制相交的两条线