首页 > 编程语言 >基于Django中间件引发的编程思想

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

时间:2022-12-12 17:15:06浏览次数:55  
标签:__ 编程 py 中间件 module Django content notify import

基于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 #启动文件

image-20221111151627195

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('国庆不放假')

标签:__,编程,py,中间件,module,Django,content,notify,import
From: https://www.cnblogs.com/zaosong/p/16976544.html

相关文章

  • 《Java并发编程详解》读书笔记
    嗯,书是假期开始看的感觉,虽然部分知识以前学过,但是在学一次巩固一下。嗯,加油生活。摘一句子,^_^有一天,突然发现自己没有热爱的东西了。就这样进入浪费时间的年代。秋天一到,候......
  • 《Python核心编程》第三版 读书笔记
    “一个不成熟男子的标志是为了某种事业英勇地死去,一个成熟男子的标志是为了某种事业卑微地活着。”                       ......
  • Django自带的序列化组件
    Django自带的序列化组件(为drf做铺垫)(drf:djangorestframework)#在前端获取到,后端用户表里所有的数据,并且是列表套字典的格式#views.pyfromdjango.httpimport......
  • S02.shell图形化编程
    whiptail使用消息框语法:whiptail--title"<messageboxtitle>"--msgbox"<texttoshow>"<height><width>示例:#!/bin/bash#--title:表示指定标题内容#--msgbox:......
  • 系统编程之文件IO(二)——文件系统及文件描述符
    文章目录​​一、文件编程​​​​二、文件IO​​​​2.1文件IO重要性​​​​2.2根目录​​​​2.3文件描述符​​一、文件编程文件io:一切皆文件!(VFS)虚拟文件系统节省成......
  • 深度之眼(九)——python函数--面向过程的编程
    文章目录​​4.1函数的定义及调用​​​​4.1.1为什么要调用函数​​​​4.1.2函数的的定义及调用​​​​4.1.3参数传递​​​​4.1.4函数体与变量作用域​​​​4.1.......
  • 深度之眼(十三)——Python:类-面向对象的编程
    文章目录​​引子——类的引入​​​​7.1类的定义​​​​7.1.1类的命名​​​​7.1.2类的属性​​​​7.1.3类的方法​​​​7.2创建实例​​​​7.2.1实例的创建​......
  • Django模型层
    模型层目录模型层1、测试脚本2、单表操作2.1、表准备2.2、操作2.3、常见13种单表查询方法3、Django终端打印SQL语句4、神奇的双下划线5、多表操作5.1、表准备5.2、一......
  • Django路由层
    路由层当⽤户在您的Web应⽤程序上发出⻚⾯请求时,Django会获取url中请求路径(端⼝之后的部分),然后通过urls.py⽂件查找与路径相匹配的视图,然后返回HTML响应或404未找到的错......
  • Django视图层
    视图层目录视图层1、三板斧2、JsonResponse对象3、form表单上传文件及后端如何操作4、request对象5、响应对象6、FBV与CBV视图响应的过程:当⽤户从浏览器发起⼀次请求时,......