Django 中间件的理解与使用
https://zhuanlan.zhihu.com/p/140053309
Middleware中间件是Django提供的一个处理request和response的hooks(钩子函数)框架
Middleware就相当于装饰器,在执行主程序之前或之后去实现一些其他功能,例如权限认证、Csrf判断等等。
钩子函数作用与所有的view视图中的函数,而装饰器可以只作用于指定的view视图中的某几个函数。
理解下图就差不多了:
如上图:在view视图接收到HttpRequest发送过来的request请求之前会先经过middleware,而后request经过了view视图中对应的函数处理过后,会返回response,之后又会经过middleware,最终才成为HttpResponse。
每个middleware都实现了一种功能,拿上面AuthenticationMiddleware
来说,当request还没到达view视图时会先进入到AuthenticationMiddleware
中执行对应的函数,例如权限认证之类的,当权限不够时,则request就进入不到view中,该请求就会被直接返回。同样的假如权限够,view视图接收到request后,返回对应的response,这response也会进入到AuthenticationMiddleware
中执行对应的函数(除非没有编写)。