flask配置之反射
引子:
django和flask,无论中间件还是其他地方,配置文件大量使用了反射
执行顺序
request---flask.app.view--utils.__init__-----class
优点
体现了开放封闭原则,解耦合
代码
flask.app
# -*- coding: utf-8 -*-
from flask import Flask,request
from utils import send_msgs
app=Flask(__name__)
@app.route('/uuuuu')
def index():
data=request.args.get("age")
# print(request.json.get("data"))
print("ddddd",data)
if data == '888':
send_msgs(data)
return "hello word"
if __name__ == '__main__':
app.run()
utils目录结构

__init__.py
import flask_config_test
import importlib
def send_msgs(msg):
for path in flask_config_test.MSG_LIST:
m,c=path.rsplit(".",maxsplit=1)
md=importlib.import_module(m)
cls_obj=getattr(md,c)()
print(cls_obj)
cls_obj.send(msg)
email.py
class EMAIL(object):
def __init__(self):
self.name="dsdf"
self.pwd="dsfsdf"
def send(self,info):
pass
msg.py
class MSG(object):
def __init__(self):
self.name = "dsdf"
self.pwd = "dsfsdf"
def send(self, info):
pass
base.py 作用类似于python的抽象类 用来约束 代码规范
class Base(object):
def send(self,msg):
raise NotImplementedError("报错信息")

浙公网安备 33010602011771号