源码看Flask框架配置管理(4)

from flask import Flask app = Flask(__name__) tuple_config = ( ('DEBUG', True), ('TESTING', False) ) dict_config = { 'DEBUG': True, 'TESTING': False } # app.config.from_mapping(tuple_config, A=123, B=456) # 使用元组 app.config.from_mapping(dict_config, A=123, B=456) # 使用字典 print('DEBUG:', app.config.get('DEBUG')) print('DEBUG:', app.config.get('DEBUG')) print('TESTING:', app.config.get('TESTING')) print('A:', app.config.get('A')) print('B:', app.config.get('B'))

上面代码中,我们定义了元组和字典(实际开发中最好在一个专门的模块中定义),使用元组进行配置的方法我注释掉了,运行效果都是一样的,你可以调试一下,加深理解源码。输入如下:

DEBUG: True

TESTING: False

A: 123

B: 456

7 配置方式5-json文件:from_json

如果你喜欢用json文件的方式来管理配置,那么,from_json()方法刚好适合你,我们来了看看这个方法的实现:

def from_json(self, filename, silent=False): filename = os.path.join(self.root_path, filename) # 拼接路径 try: with open(filename) as json_file: # 读取文件 obj = json.loads(json_file.read()) # 对文件内容字符串反序列化成字典 except IOError as e: if silent and e.errno in (errno.ENOENT, errno.EISDIR): return False e.strerror = "Unable to load configuration file (%s)" % e.strerror raise return self.from_mapping(obj) # 调用上面介绍过的from_mapping方法

如果你理解了上面from_mapping()方法,那么,对于这个from_json()方法也很好理解了,因为from_json()方法只是读取json文件成字符串后反序列化成字段传入from_mapping()。

在使用from_json()方法之前,我们得先创建一个json文件来写入配置,假设文件名为settings.json,内容如下:

{ "DEBUG": true, "TESTING": false, "A": 123 }

使用方法:

from flask import Flask app = Flask(__name__) app.config.from_json('settings.json') #传入json文件 print('DEBUG:', app.config.get('DEBUG')) print('TESTING:', app.config.get('TESTING')) print('A:', app.config.get('A'))

输出:

DEBUG: True

TESTING: False

A: 123

8 配置方式6-系统环境变量:from_envvar

from_envvar()是从系统环境变量中读取配置,源码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9d8d5bd5e5492a644daa78646057f54b.html