Django框架之中间件思想
735 字
4 分钟
Django框架之中间件思想
- 1纯手撸Web框架
- 2Python框架初识
- 3Django框架初识
- 4Django框架安装
- 5Django框架入门之小白必会三板斧
- 6Django便捷函数shortcuts
- 7Django框架入门之静态文件
- 8Django的静态文件
- 9Django框架入门之request对象
- 10Django框架入门之ORM操作
- 11Django框架之生命周期流程图
- 12Django框架之路由层
- 13Django框架之视图层
- 14Django框架之模板层
- 15Django框架之模型层
- 16图书管理系统
- 17Ajax基础操作
- 18Ajax进阶操作
- 19JS确认插件补充
- 20Django框架之序列化组件serializers
- 21Django框架之批量插入数据
- 22Django框架补充之分页器推导
- 23Django框架之Form组件
- 24Django框架Form组件之常用字段及插件
- 25Django框架Form组件之渲染HTML代码
- 26Django框架Form组件之渲染错误信息
- 27Django框架Form组件之钩子函数(Hook)
- 28Django框架Form组件之源码
- 29Django框架Form组件之模型表单ModelForm
- 30Django表单API详解
- 31Django框架之Cookie和Session
- 32Django框架之会话session补充
- 33Django框架之CBV添加装饰器的三种方式
- 34Django框架之中间件引入
- 35Django框架之中间件思想本文
- 36Django框架之csrf跨站请求
- 37Django框架之auth模块
- 38Django框架之settings源码
- 39Django框架之settings配置
- 40Django框架之settings核心配置项
- 41RBAC权限系统
- 42前端基础之URL编码
【一】引入
- 我们在Django的配置文件中,里面的中间件配置文件,虽然使用逗号分开,但是可以做到直接引入某个模块
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',]- 这种路径构造方式,我们就可以通过importlib模块实现
【二】推导过程
以多平台发送消息为例
【1.0】引入
- 定义一个包
# -*-coding: Utf-8 -*-# @File : send_message .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18def wechat(content): print(f"wechat接收到的通知:>>>{content}")
def QQ(content): print(f"QQ接收到的通知:>>>{content}")
def email(content): print(f"email接收到的通知:>>>{content}")- 启动文件中启动包
# -*-coding: Utf-8 -*-# @File : start .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18
from send_message import *
def send_all(content): wechat(content=content) QQ(content=content) email(content=content)
if __name__ == '__main__': send_all("这是一条测试信息")wechat接收到的通知:>>>这是一条测试信息QQ接收到的通知:>>>这是一条测试信息email接收到的通知:>>>这是一条测试信息【2.0】升级
(1)功能部分
- 先分别创建不同的消息功能文件
- 在同一个文件夹下
- 创建三个功能文件
# -*-coding: Utf-8 -*-# @File : WeChat .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18
class WeChat(object): def __init__(self): # 发送消息前的准备工作 # 比如掉接口/初始化配置等 pass
def send(self, content): print(f"WeChat 发送的消息 :>>>{content}")# -*-coding: Utf-8 -*-# @File : QQ .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18
class QQ(object): def __init__(self): # 发送消息前的准备工作 # 比如掉接口/初始化配置等 pass
def send(self, content): print(f"QQ 发送的消息 :>>>{content}")# -*-coding: Utf-8 -*-# @File : email .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18
class email(object): def __init__(self): # 发送消息前的准备工作 # 比如掉接口/初始化配置等 pass
def send(self, content): print(f"email 发送的消息 :>>>{content}")- 在上面的文件内创建初始化文件
# -*-coding: Utf-8 -*-# @File : __init__ .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18import settingsimport importlib
def send_all(content): # 拿到每一个包的路径 for path_str in settings.MODEL_LIST: model_path, class_name = path_str.rsplit('.', maxsplit=1) # model_path : model.email # class_name : email # (1)利用字符串导入模块 # models : 模块对象 models = importlib.import_module(model_path) # (2)利用反射拿到类名 cls = getattr(models, class_name) # (3)生成类的对象 obj = cls() # (4)利用鸭子类型直接调用send发送消息 obj.send(content)
if __name__ == '__main__': send_all('1')(3)调用部分
- 在外部定义一个配置文件
# -*-coding: Utf-8 -*-# @File : settings .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18
MODEL_LIST = [ 'model.email.email', 'model.QQ.QQ', 'model.WeChat.WeChat',]- 在外部的真正功能文件
# -*-coding: Utf-8 -*-# @File : start .py# author: Chimengmeng# blog_url : https://www.cnblogs.com/dream-ze/# Time:2023/7/18import model
model.send_all('这是测试消息')email 发送的消息 :>>>这是测试消息QQ 发送的消息 :>>>这是测试消息WeChat 发送的消息 :>>>这是测试消息(4)小结
- 遵从Python中的鸭子类型
- 可以在功能文件中自定义功能文件添加或者注释
- 在 settings.py 文件中相关的路径注释掉或添加上去即可
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














