阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

高阶应用-中间件

358次阅读
没有评论

共计 1555 个字符,预计需要花费 4 分钟才能阅读完成。

一、说明

中间件是一个用来处理 Django 的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变 Django 的输入和输出。每个中间件组件都负责做一些特定的功能。可以介入 Django 的请求和响应

二、本质

一个 Python 类

三、中间件应用场景

  • 白名单 / 黑名单

    通过访问者用户或者 IP 优先通过或者拒绝一些用户的访问

  • URL 访问过滤

    如果用户访问的是 lsogin 视图(s 放过)

    如果访问其他视图(需要检测是不是有 session 已 dzfr 经有了放行,没有返回 login),这样就省得在 多个视图函数上写装饰器了

  • 缓存

    客户端请求来了,中间件去缓存看看有没有数据,有直接返回给用户,没有再去逻辑层 执行视图函数

四、方法

  • __init__

    不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件

  • process_request(self,request)

    在执行视图之前被调用(分配 url 匹配视图之前),每个请求上都会调用,返回 None 或者 HttpResponse 对象

    返回值是 None 的话,按正常流程继续走,交给下一个中间件处理,如果是 HttpResponse 对象,Django 将不执行视图函数,而将相应对象返回给浏览器

  • process_view(self,request,view_func,view_args,view_kwargs)

    调用视图之前执行,每个请求都会调用,返回 None 或者 HttpResponse 对象

    参数说明

    • request 是 HttpRequest 对象。
    • view_func 是 Django 即将使用的视图函数(它是实际的函数对象,而不是函数的名称作为字符串)
    • view_args 是将传递给视图的位置参数的列表
    • view_kwargs 是将传递给视图的关键字参数的字典
    • view_args 和 view_kwargs 都不包含第一个视图参数(request)
  • process_template_response(self,request,response)

    在视图刚好执行完后调用,每个请求都会调用,返回 None 或者 HttpResponse 对象

  • process_response(self,request,response)

    所有响应返回浏览器之前调用,每个请求都会调用,返回 HttpResponse 对象

  • process_exception(self,request,exception)

    当视图抛出异常时调用,返回 HttpResponse 对象

五、图解

高阶应用 - 中间件

六、自定义中间件

  • App 同级 -> 创建工程目录 middleware

    |-App
    |-middleware
    |–myMiddle.py
    |-project

  • 在 middleware 里 创建一个 python 文件 myMiddle.py

    from django.utils.deprecation import MiddlewareMixin class MyMiddle(MiddlewareMixin): def process_request(self, request): print("get 参数为:", request.GET.get("arg")) print("请求方法", request.method) #HTTP_USER_AGENT if request.META['REMOTE_ADDR'] == '127.0.0.1': return HttpResponse('抱歉 您不能进行访问') def process_exception(self,request,exception): print(str(exception)) return redirect('/') # 如果出现异常去首页
  • 使用自定义中间件

    配置 settings.py 文件

    MIDDLEWARE 中添加

    'middleware.myMiddle.MyMiddle'

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计1555字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802466
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...