基于Django中间件引发的编程思想

本文介绍了如何基于Django中间件利用importlib模块动态导入Python模块和类,展示了在settings和start.py文件中的实现方式。通过创建不同功能的py文件并组织为包,实现了灵活的通知发送功能,例如邮件、QQ和微信通知。核心思想包括包的组织、模块的动态导入以及类的实例化和方法调用。
摘要由CSDN通过智能技术生成

基于Django中间件引发的编程思想(重点

在这里插入图片描述

importlib模块使用

能够以字符串的形式导入模块,最小单位只能到模块名

# 1. 创建一个py文件 aaa.py
# 2. 创建一个mypach文件夹,里面创建一个bbb.py文件,写上name='zhao'

然后再aaa.py中书写以下代码
import importlib

res = 'mypack.bbb'  # 最小单位只能到模块的名字,不能点模块里的变量名
ret = importlib.import_module(res)  # from mypack import bbb
print(ret)


# 结果如下
<module 'mypack.bbb' from 'E:\\Python\\python\\python进阶\\WEB开发\\day12\\mypack\\bbb.py'>
编程思想
1. 先创建一个notify文件夹,里面创建py文件,有几个功能,创建几个py文件
2. 因为一个文件夹,里面有一个个的py文件,就是一个包,所以要再notify文件夹里创建__init__.py文件
3. settings #配置文件
4. start.py #启动文件

在这里插入图片描述

email.py

class Email(object):
    def __init__(self):
        pass  # 发送邮箱需要做的前期准备工作   接口什么的

    def send(self, content):
        print('Email通知:%s' % content)

qq.py

class Qq(object):
    def __init__(self):
        pass  # 发送QQ需要做的前期准备工作

    def send(self, content):
        print('QQ通知:%s' % content)

wechat.py

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

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

settings.py

NOTIFY_LIST = [       
    'notify.email.Email',
    'notify.qq.Qq',
    'notify.wechat.Wechat',
]

__init__.py (编程思想的灵魂)

import settings
import importlib


def send_all(content):
    for path_str in settings.NOTIFY_LIST:  # 'notify.email.Email',
        module_path, class_name = path_str.rsplit('.', maxsplit=1)
        # module_path='notify.email'
        # class_name='Email'
        # 1. 利用字符串导入模块
        module = importlib.import_module(module_path)  # from motify import email
        # 2. 利用反射获取类名
        cls = getattr(module, class_name)  # Email Qq Wechat
        # 3. 生成类的对象
        obj = cls()
        # 4. 利用鸭子类型直接调用send方法
        obj.send(content)

start.py

import notify

notify.send_all('国庆不放假')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过期的秋刀鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值