Django-中间件(切面编程AOP)

news/2024/10/28 21:09:02/

自定义中间件

官网:中间件 | Django 文档 | Django

中间件使用多就在主应用创建,仅限于子应用就在子引用中创建中间件文件.py

之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件

python">def simple_middleware(get_response):def middleware(request):# 业务处理前response = get_response(request)# 业务处理后return responsereturn middlewareclass SimpleMiddleware:def __init__(self, get_response):self.get_response = get_response# One-time configuration and initialization.def __call__(self, request):# 业务处理前response = get_response(request)# 业务处理后return response


process_view函数

process_view() 只在 Django 调用视图前被调用,它应该返回 None 或 HttpResponse 对象。

  • 返回 None ,Django 将继续处理这个请求,执行任何其他的 process_view() ,然后执行相应的视图
  • 如果它返回 HttpResponse 对象,Django 不会去影响调用相应的视图;它会将响应中间件应用到 HttpResponse 并返回结果。

process_view(request, view_func, view_args, view_kwargs)

  • request 是一个 HttpRequest对象

  • view_func 是一个 Django 将要使用的 Python 函数。(这是一个真实的函数对象,不是函数的名称)

  • view_args 是一个用来传递给视图的位置参数列表

  • view_kwargs 是一个用来传递给视图的关键字参数字典

    提示

    view_args 和 view_kwargs 都不包含第一个视图参数 ( request )


    中间件的应用场景

  • 网站维护更新,不让用户访问可以使用中间件

python">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',# 自定义中间件'middle_app.middleware.UpwebMiddle',  # 网站维护使用
]
python">from django.http import HttpResponse
from django.conf import settingsclass UpwebMiddle():def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request):if request.path.startswith(settings.WH_URL):return HttpResponse("维护中无法访问")response = self.get_response(request)return response


http://www.ppmy.cn/news/1542686.html

相关文章

在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法

本次介绍分为3篇文章: 1:.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2:在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3:.NET …

rtp协议:rtcp包格式和传输间隔

RTP Control Protocol -- RTCP-rtp控制协议 实时传输控制协议(RTCP)基于对会话中的所有参与者定期传输控制包,使用与数据包相同的分发机制。底层协议必须提供数据包和控制包的多路复用,例如使用UDP时使用不同的端口号。RTCP执行四…

shodan搜索引擎——土豆片的网安之路

工作原理: 在服务器上部署了各种扫描器,如漏洞扫描器,硬件扫描器,目录扫描器等等,24小时不停的扫描,批量对IP地址扫描 优点:方便,很快得到最新扫描结果,漏洞信息 缺点…

数据挖掘:基于电力知识图谱的客户画像构建实施方案

基于电力知识图谱的客户画像构建实施方案 本技术方案分为两大部分。第一部分为基于电力知识图谱的客户画像研究技术。第一部分主要介绍该项目将用到的技术,包括整体框架、知识图谱技术、客户画像技术。 第二部分为基于电力知识图谱的客户画像标签体系。第二部分将…

论文阅读(二十六):Dual Attention Network for Scene Segmentation

文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文:Dual Attention Network for Scene Segmentation   论文链接:Dual Attention Network for Scene Segmentation   代码链接:Github 1.Intr…

华为交换机堆叠

堆叠方式 堆叠卡堆叠: 堆叠卡堆叠又可以分为两种情况: 交换机之间通过专用的堆叠插卡ES5D21VST000及专用的堆叠线缆连接。堆叠卡集成到交换机后面板上,交换机通过集成的堆叠端口及专用的堆叠线缆连接。 业务口堆叠: 业务口堆…

UWA Gears:Frame Capture模式 - 着色器查看器

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台,提供了实时监测和截帧分析功能,帮助您精准定位性能热点,提升应用的整体表现。 在上周的文章中,我们详细介绍了网格查看器的功能,介绍如何通过网格数据优化…

VuePress的基本常识

今天大概了解了一下Vuepress,感觉很棒,看着极其简单,自己也想做一个,后续我大概率也会做一个用Vuepress为基础做的博客网站,很酷~ 哈哈哈,下面是我今天学习Vuepress的一些内容,简单分享下&#…