引言:

应用程序需要某种配置。根据应用程序环境,您可能需要更改不同的设置,例如切换调试模式、设置密钥以及其他特定于环境的事物。下面介绍在 flask 中如何去管理这些配置信息

Flask 中配置类:Config

在 Flask 应用程序中,Config 类是一个用于管理应用程序配置的基类,它提供了一个方便的方式来管理 Flask 应用的各种环境配置,包括调试模式、数据库连接、日志、邮件、缓存等;提供了一个方便的方式,使得我们可以灵活管理 Flask 应用的各种各样环境配置。查看下下面代码

from flask import Flask 
app = Flask(__name__) 
if __name__ == '__main__': 
print(type(app.config))

当我们运行上面代码时,输出结果为;

可以看出 app.config 是一个定义在 flask.config 模块中的类 Config; 也就是 Flask 提供了一个 config 属性,当创建完 Flask 应用实例时,也就是实例化 Config 了,可以通过其提供的一些方法进行管理配置;若要了解 Config 整个创建过程,可以参照 config 属性的源码进行了解;通过其源码可以看到 Config 继承了 dict,这也就代表 Config 可以使用一切 dict 相关方法,接下来介绍一下使用方式。

在 Flask 中 Config 类的使用也是非常灵活,有很多种方式设置和加载配置。例如,可以直接代码里面写入配置值使用 dict 方法修改,或者使用 os 模块中 getenv() 方法、environ.get(),再配合系统环境变量进行获取配置值。对于一些不适宜在程序中写入如密码,或者一些通用配置信息可以用 Config 类来进行管理。

方式 1 直接使用:
app.config['DEBUG'] = True # 设置 DEBUG 值
如果要更新多个配置,可以使用 dict.update() 方法:

app.config.update(
DEBUG=True,   SECRET_KEY=’af176072121a1f1c9cf7a8c58364535ebfd75865’
)

方式 2 从 Python 文件进行配置 app.config.from_object()
这个允许接收的参数可以是 str 类型,可以是一个模块,甚至是一个类。以下举例说明,下面是编写时目录结构

init.py 代码如下

config.py 代码如下:

当执行时init.py 时,输出结果为

若是将传入参数改为字符串形式,也是可以的,如下代码

输出结果:

除了以上方式之外还有以下等方式
①.通过 py 文件配置 from_pyfile(self, filename, silent=False)
app.config.from_pyfile("python 文件名称")
②.通过环境变量配置:from_envvar(self, variable_name, silent=False)
app.config.from_envvar("环境变量名称")
③.json 文件:from_json(self, filename, silent=False)
app.config.from_json("json 文件名称"),注意文件必须是 json 格式
④.字典格式:from_mapping(self, *mapping, **kwargs)
app.config.from_mapping({'DEBUG': True})
⑤.通过 Flask 构造函数的 config 参数设置:

from flask import Flask  
app = Flask(__name__, config={
'DEBUG': True,   
'SECRET_KEY': 'af176072121a1f1c9cf7a8c58364535ebfd75865'
})

实际中推荐使用 app.config.from_object(),这种方法可以配置多套,使用时,可以配合当前系统中环境变量,传入不同类即可实现。

以 windows 系统举例当在系统中配置好环境变量后,可以使用 os 库中 environ.get()、getenv() 或者其他方式获取系统环境变量,进而更好管理所需要的配置信息,需要注意 windows 设置了环境变量后,需要重启电脑才会生效

在 config.py 中代码如下

init.py 中代码如下

总结

总的来说,Flask 中的 Config 类是一个非常有用、方便的配置管理,提供了多种配置方式,可以帮助我们更好地管理应用程序的配置参数。通过使用 Config 类,我们可以创建一个基础配置类,并在不同环境或不同应用程序中使用它,当我们需要添加或修改某些配置项时,只需创建一个新的配置类来继承基础配置类并重写需要更改的配置项即可。这样可以让我们更加轻松地管理应用程序的配置,使代码更加整洁、易读和灵活。


↙↙↙阅读原文可查看相关链接,并与作者交流