1. 什么是配置文件?
就是当程序调用的一些参数,文件路径,方法或者类放到一个文件中,
当下次需要修改的一个参数的时候,不用再从所有关联的程序中找到该参数挨个修改,
比较繁琐。像Django中,程序启动的时候需要加载setting.py文件,该文件配置包含
中间件,数据库链接,文件路径,静态文件模板路径等参数,当视图函数链接数据库或
创建静态文件的时候根据配置文件找到参数即可进行链接或创建文件等等操作,修改
也是如此,只要找到参数修改配置参数即可。
2. 使用配置文件
from flask import Flask,session,current_app # 创建配置 app = Flask(__name__) app.secret_key ='sdfsdfsdf' # 方式一: # app.config['SESSION_COOKIE_NAME'] = 'session_lvning' # # 方式二: # app.config.from_pyfile0('settings.py') # 方式三: # import os # os.environ['FLAKS-SETTINGS'] = 'settings.py' # app.config.from_envvar('FLAKS-SETTINGS') # 方式四:推荐使用 app.config.from_object('settings.DevConfig') @app.route('/index',endpoint='xx',methods=['GET']) def index(): print(current_app.config['DB']) session['xx3'] = 123 return "xxx" if __name__ == '__main__': # app.__call__ app.run()
3. 配置文件
class BaseConfig(object): NNN = 123 class TestConfig(BaseConfig): DB = '127.0.0.1' class DevConfig(BaseConfig): DB = '192.168.1.1' class ProConfig(BaseConfig): DB = '47.18.1.1'
4. 项目案例:
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:supery import importlib from flask import Flask,request,current_app app = Flask(__name__) app.config.from_object('setting.BaseConfig') @app.route('/index',endpoint='index',methods=['GET']) def index(): print(current_app.config['MESSAGE_CLASSES']) setting = current_app.config['MESSAGE_CLASSES'] for cls_path in setting: module_path,class_name = cls_path.rsplit('.',maxsplit=1) m = importlib.import_module(module_path) obj = getattr(m,class_name)() obj.send('哇呀呀','import_model','906906659@qq.com','supery007',) return '123' if __name__ == '__main__': app.run()
5. MSG配置参数
class BaseConfig(object): NNN = 123 MESSAGE_CLASSES = [ 'utils.message.email.Email', 'utils.message.msg.Msg', 'utils.message.wx.WeChat', 'utils.message.dingding.DingDing', ]
6. 测试结果