中间件(django)笔记

Django框架中的中间件

在settings.py文件中这里写的都是django框架用到的中间件

ps:对于字符串的模块名可使用 importlib.import_module(‘模块名’)导入

自定义django中间件

创建MiddleWare.py文件,目录格式如图

创建自定义中间件类

from django.utils.deprecation import MiddlewareMixin


class MW(MiddlewareMixin):
    pass

在settings.py注册自定义的中间件,可根据需求调整中间件位置,暂时放在末尾

以上是自定义中间件的格式,下面是实现方法的具体要求

自定义中间件需继承django.utils.deprecation.MiddlewareMixin类,并至少实现以下五个方法之一

方法名参数执行顺序执行条件返回值注释
process_requestself, request按照注册的顺序(在settings.py里面设置中 从上到下的顺序)请求从wsgi拿到之后

返回None,继续执行后续的中间件的process_request方法

返回response , 不执行后续的中间件的process_request方法,直接返回response

 
process_responseself,request,response按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)请求有响应的时候必须返回一个response对象 
process_viewself, request, view_func, view_args, view_kwargs按照注册的顺序(在settings.py里面设置中 从上到下的顺序)在urls.py中找到对应关系之后 在执行真正的视图函数之前

返回None,继续执行后续的中间件的process_view方法

返回response,直接返回response

view_func:将要执行的视图函数对象

view_args:视图函数的位置参数

view_kwargs:视图函数的关键字参数

process_exceptionself, request, exception按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)视图函数中抛出异常的时候才执行返回None,继续执行后续中间件的process_exception 返回response,直接返回responseexception:视图函数抛出的异常信息
process_template_responseself, request, response按照注册顺序的倒序(在settings.py里面设置中 从下到上的顺序)视图函数执行完,在执行视图函数返回的响应对象的render方法之前 返回None,继续执行后续中间件的process_exception 返回response,直接返回response 

Django调用注册的中间件里面五个方法的顺序:
1. process_request
    urls.py
2. process_view
    view函数
3. 有异常就执行 process_exception
4. 如果视图函数返回的响应对象有render方法,就执行process_template_response
5. process_response


附django请求流程图、process_request、process_response、process_view执行流程图

Django请求流程图


        
            

process_request()和process_response()执行流程


            

process_view()执行流程


            
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值