码迷,mamicode.com
首页 > 其他好文 > 详细

中间件_django

时间:2020-07-12 14:46:06      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:ddl   框架   ESS   set   错误信息   匹配   png   路由   ons   

一、中间件简介

  django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

  在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件。

  中间件中一共有四个方法:

    process_request

    process_view

    process_exception

    process_response

二、中间件流程

  当用户发起请求时会依次经过所有的中间件,请求时汇之星process_request方法,最后到达views函数中,views函数处理完成之后,再依次穿过中间件,执行process_response方法。最终返回给请求者。

在django中叫中间件,在其他框架里面可能叫管道。

  技术图片

 

三、自定义新增中间件

  技术图片  

 

  settings里面注册中间件:

  技术图片

  页面请求时会经常这些中间件

   技术图片

 

 若其中的中间件不满足条件时,可以直接通过这个中间件返回,然后依次返回给请求者(比如请求不满足csrf验证要求时)

  技术图片

 

 

四、中间件的其他方法

1、process_view方法

技术图片

 

运行结果

 技术图片

 

 

 分析得出的过程:

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

  技术图片

 

 

2、process_exception

当views的函数中出现错误时,就会执行process_exception方法

 技术图片

 

这样当用户发起请求的时候到达中间件3的process_request之后会到达urls路由关系映射这里,如果匹配到了就会到中间件1的process_view,然后依次传递到中间件3的process_view,到达view函数。如果view函数中有报错,则会从中间件3依次向上判断每个中间件的process_exception是否能匹配到这个错误信息,如果匹配到则直接返回到最后一个中间件,这里即中间件3的process_response,然后依次返回到用户,如果没有匹配到这个错误则直接在页面显示错误信息。如果view函数中没有错误,则到中间3即最后一个中间件3的process_response,然后依次向上,传到用户

 

中间件_django

标签:ddl   框架   ESS   set   错误信息   匹配   png   路由   ons   

原文地址:https://www.cnblogs.com/chenxiaozan/p/13288108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!