首页 > 其他 > 详细

Django-基于django中间件源码思想,实现功能的配置使用

时间:2019-12-05 19:48:04      阅读:98      评论:0      收藏:0      [点我收藏+]

一、我们先做个初级的,把所有文件放到初级思想文件夹下:

1.我们先创建notify.py文件,内部不代码如下:

def send_email(content):
    print(邮箱通知:%s % content)


def send_msg(content):
    print(短息通知:%s % content)


def send_wechat(content):
    print(微信通知:%s % content)

2.我们创建一个执行文件star.py文件

from 初级思想.notify import *#导入我们在notify文件的函数


def send_all(content):#利用一个函数传参调用其他函数
    send_email(content)
    send_msg(content)
    send_wechat(content)


if __name__ == __main__:
    send_all(元旦放三天假)

二、在原有的基础上我们利用中间件的思想来把上面的优化下:

1.创建一个python文件夹

(1).notify

 __init__.py

import importlib


def send_all(content):
    # 循环setting配置文件中的NOTFY_LIST,取出对应的值进行下面的操作
    for path in setting.NOTIFY_LIST:
        module_path, cls_name = path.rsplit(., maxsplit=1)  # 按最右边·分割,最大分个数为1个
        md = importlib.import_module(module_path)  # r如同from notify import email....
        cls = getattr(md, cls_name)  # 利用不同的前缀(如同from notify import email)反射获取文件中类的名字
        obj = cls()  # 实例化产生一个个类对象
        obj.send(content)

 email.py

lass Email(object):
    def __init__(self):
        pass #这里可以做一些发送邮件需要的前期准备!!!

    def send(self,content):
        print(邮件通知:%s%content)

 wechat.py

class WeChat(object):
    def __init__(self):
        pass  #发送微信需要做的前期准备

    def send(self,content):
        print(微信通知:%s%content)

 msg.py

class Msg(object):
    def __init__(self):
        pass#这里可以放发短信件需要的前期准备

    def send(self,content):
        print(短信通知:%s%content)

(2).setting.py(配置文件)

NOTIFY_LIST = [
    notify.email.Email,
    notify.msg.Msg,
    notify.wechat.WeChat,
]
#这样就可以实现如同Django中间一样,我们注销哪个哪个就被执行了

(3).start.py(执行文件)

from notify import *

if __name__ == __main__:
    send_all(好嗨哦)

 

Django-基于django中间件源码思想,实现功能的配置使用

原文:https://www.cnblogs.com/mqhpy/p/11991312.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!