面试
Django中间件的执行顺序。

当用户发起请求的时候会按settings文件中中间件的顺序从上到下依次经过所有的中间件,这个时候的请求是process_request,最后到达views的函数中,views函数处理后,再从下往上依次经过所有的中间件,这个时候是process_response,最后将响应返回给请求者。

这是Django默认中间件的执行顺序。我们也可以自定义中间件。
比如我们自定义了两个中间件,并配置好了settiing文件。
我们在第一个中间加的process_request返回了一个HttpResponse('中断')。那么当process_request从上往下依次执行到自定义的第一个中间件时就直接执行第一个自定义的process_response,然后依次向上执行其他中间件最后将"中断"这个字符串返回给请求者。

从上往下依次执行中间件的process_request,当最后一个中间的process_request到达路由关系映射之后,返回到中间件1的process_view,然后依次往下,到达views函数,最后通过process_response依次返回到达用户。

浙公网安备 33010602011771号