首页 > 其他分享 >Django:中间件

Django:中间件

时间:2022-12-21 21:46:08浏览次数:39  
标签:自定义 process 中间件 request Django response view

一、Django中间件

django默认自带七个中间件,还支持用户自定义中间件

1.作用:全局的处理:会对所有的资源请求,所有的返回方式,所有的路由到视图的跳转、所有视图层的异常进行处理

  • 使用场景:当想用全局功能的时候

  • 1:限制访问频率校验:这种功能应该在中间件中编写,减少对django后端资源的浪费

  • 2:用户权限校验:(在web领域:权限就是网址)登录成功之后,每次请求来的时候,在请求中辨别出用户权限,如果符合则可以访问某些功能

2.Django流程图

image-20201026160612127

二、自定义中间件

1.创建存储自定义中间件代码的py文件或者目录

2.参考自带中间件的代码编写类并继承

3.在类中编写五个可以自定义中间件的方法

  • 需要掌握的
process_request
process_response
  • 需要了解的
process_view
process_exception
process_template_response

4.在配置文件中需要注册才能生效

三、中间件执行流程

2.request和response通过中间件的顺序

image-20221221212020829

image-20221221120823960

2.process_request和process_response方法

  • process_request

    1.请求来的时候会依次经过每一个在settings中注册了的中间件里面的该方法,在注册顺序从上往下依次执行,每个中间件中的process_request,如果没有process_request方法则跳过

    2.如果方法自己返回了HttpReponse对象,那么不再往后执行,直接原路返回给前端

class MyMiddleware1(MiddlewareMixin):

    def process_view(self, request, view_func, view_args, view_kwargs):
        print("我是中间件1的view")
  • process_response

    1.响应走的时候,会从下往上一次经过每一个注册了的中间件里面的方法,如果没有则直接跳过

    2.该方法有两个形参,形参只

    3.如果在执行process_response方法的时候,直接返回了HttpReponse对象,那么会原路返回执行process_response

标签:自定义,process,中间件,request,Django,response,view
From: https://www.cnblogs.com/DuoDuosg/p/16997288.html

相关文章