前言:
django中间件的配置,均有字符串组成,将字符串注释后则取消对字符串的调用,将字符写上 则代表对字符串可在全局中使用,而我们所要考虑的是字符串为什么能够完成对其背后的函数的调用
模板
消息通知:
想同时发送qq,微信,邮箱,短信通知,
第一步:
建立一个py package(qq.py,wechat.py,email.py,__init__.py)
在各自的py文件,完成对类的书写,
在建立 settings 和 start文件
settings里配置 各自的位置列表
关键点
NOTIFY_LIST = [ ‘notify.email.Email‘, ‘notify.qq.Qq‘, ‘notify.wechat.Wechat‘, ] #若列表如上所示 如何取出并完成类的实例化形成对象 import importlib for path_st in NOTIFY_LIST: module_str,class_name = path_str.rsplit(‘.‘,maxsplit=1) module = importlib.import_module(module_path)#相当于from notify import email cls = getattr(module,class_name) #利用反射拿到类 obj = cls() #类的实例化
主要关键点 是 importlib 和 getattr的使用 都是基础的模块 即使学了很久似乎也无法结合这样一种的编程思想。