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_envvarfrom_envvar()是从系统环境变量中读取配置,源码如下: