前言

系列文章目录
[Python]目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234


文章目录

  • 前言
  • 1. 中间件简介
  • 2. 中间件的定义
  • 3. 中间件的注册
  • 4. 中间件测试
  • 5. 多个中间件的执行顺序
  • 6. 补充

1. 中间件简介

中间件就是伴随请求和响应的时候会发生的事情。

Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。

中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。

我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。

2. 中间件的定义

定义中间件,就是在请求的处理函数外再包一层函数。即使用闭包修饰请求的处理函数。

中间件的应用场景:例如,中间件可以在进行相应的请求处理前,判断用户是否登录过

# 定义一个中间件
# 在请求处理前输出 before request
# 在请求处理后输出 after request
# 参数get_response为请求的处理函数
def simple_middleware(get_response):def middleware(request):print('before request')# 调用请求的处理函数处理请求response = get_response(request)print('after request')# 返回请求的响应return response# 返回中间件处理后的请求处理函数return middleware

3. 中间件的注册

4. 中间件测试

中间件在每次请求和响应都会调用,不管调用任何请求都会触发中间件

5. 多个中间件的执行顺序

  • 在请求视图(请求处理函数)处理前,中间件由上至下依次执行
  • 在请求视图(请求处理函数)处理后,中间件由下至上依次执行

定义两个中间件:

# 定义一个中间件
# 在请求处理前输出 before request
# 在请求处理后输出 after request
# 参数get_response为请求的处理函数
def simple_middleware1(get_response):def middleware(request):print('before request 111111111111111111')# 调用请求的处理函数处理请求response = get_response(request)print('after request 111111111111111111')# 返回请求的响应return response# 返回中间件处理后的请求处理函数return middlewaredef simple_middleware2(get_response):def middleware(request):print('before request 222222222222222222222')# 调用请求的处理函数处理请求response = get_response(request)print('after request 222222222222222222222')# 返回请求的响应return response# 返回中间件处理后的请求处理函数return middleware

注册中间件:

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',# 注册中间件'login.middleware.simple_middleware1','login.middleware.simple_middleware2'
]

6. 补充

def simple_middleware(get_response):# 中间件第一次执行,会执行此处代码def middleware(request):print('before request')# 调用请求的处理函数处理请求response = get_response(request)print('after request')# 返回请求的响应return response# 返回中间件处理后的请求处理函数return middleware

过滤路径需要通过类中间件实现。
以类的形式实现中间件:Django—中间件详解

[Python]Django中间件相关推荐

  1. Python - Django - 中间件 process_exception

    process_exception(self, request, exception) 函数有两个参数,exception 是视图函数异常产生的 Exception 对象 process_except ...

  2. 【python】-- Django 中间件、缓存、信号

    Django  中间件.缓存.信号 一. Django  中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的 ...

  3. Django中间件与python日志模块 介绍

    一.Django中间件 1.1 介绍 Django中的中间件是一个轻量级.底层的插件系统,介于request与response处理之间的一道处理过程(用来处理特定业务的请求和响应).中间件的设计为开发 ...

  4. Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)

    12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...

  5. Python+django网页设计入门(14):使用中间件对抗爬虫

    前导课程: Python+django网页设计入门(13):表单.修改密码 Python+django网页设计入门(12):使用Bootstrap和jQuery Python+django网页设计入门 ...

  6. python middleware模块_详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击...

    一.在django后台处理 1.将django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django项 ...

  7. python django web典型模块开发实战下载_Django实战 Python Web典型模块与项目开发

    本书结合样例,介绍 Django 的基础知识.主要模块的开发以及权限管理等高级内容,并且通过图书管理系统.博客系统.车费管理系统 3 个项目的开发实战,使读者既能掌握 Django 的重要开发技术,又 ...

  8. 实习笔记0708 https协议/ django中间件/接口测试/内网与外网/域名系统DNS

    1 https协议 https://www.cnblogs.com/superfeeling/p/11561340.html https://www.cnblogs.com/an-wen/p/1118 ...

  9. Django 2.0 学习(20):Django 中间件详解

    Django 中间件详解 Django中间件 在Django中,中间件(middleware)其实就是一个类,在请求到来和结束后,Django会根据自己的规则在合适的时机执行中间件中相应的方法. 1. ...

最新文章

  1. linux cuda 异常退出,cudaErrorCudartUnloading问题排查及建议方案
  2. Java复习回顾---7月10日回顾练习
  3. python 类-Python的类
  4. python如何对人数向上取整_python中的向上取整向下取整以及四舍五入的方法
  5. 一维数组和二维数组互转
  6. Spring Boot笔记-@Scheduled(cron=““)设置调度任务
  7. [Unity] 在 3DsMax 中将骨骼调整为适应 Unity 的 Humanoid 的结构的记录
  8. python的缺陷和不足_python中异常和错误的区别
  9. pandas中DataFrame对象to_csv()方法中的encoding参数
  10. JAVA 注解示例 详解
  11. vs 2010 sp1
  12. VS中javascript注释快捷键
  13. 从Excel中随机取出几行
  14. cdrx8如何批量导出jpg_cdrx8如何批量导出jpg_办公软件操作技巧022:如何从word文档中批量导出多张图片......
  15. java程序员面试自我介绍范文
  16. tensorflow-ckpt2npy
  17. Linux命令——timeout
  18. 基于matlab的汽车牌照识别程序
  19. 3.并列句的起源与本质
  20. prometheus-预警-6

热门文章

  1. Android APP 保持屏幕常亮的三种方法
  2. lodash中数组删除常用的api
  3. 对象数组去重——数组删除所有含有固定id的对象
  4. 历史文档——试用期总结
  5. php获取汉字的拼音 拼音首字母
  6. Fiddler ——4、工具栏
  7. 【Vue学习总结】3. Vue目录结构分析
  8. Python火柴棍游戏
  9. ubuntu安装java依赖,在Ubuntu 16上安装R语言 - 未满足的依赖项
  10. window server 远程链接无法复制粘贴文件