django之中间件

1、什么是中间件

顾名思义中间件就是介于request和response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入和输出。因为改变的是全局,所以需要谨慎使用,用不好反而会影响性能。

如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。

2、中间件在django整体中的示意图

3、自定义中间件

中间件一共有四个方法

process_request     #用户发起请求时会经过

process_view            #当到达url关系映射后回调视图函数

process_exception     #视图函数出错时

process_response     #给用户响应时经过

# 注意:

这四个方法中,process_request和process_view一般是返回None的,因为如果在这里返回response对象的话,process_response会接收这个对象直接返回给用户。

 process_exception一般是捕获异常然后放到responset对象中返回,如HttpResponse(exception)。

 

> 一般只会用到request和response,当只有这两个方法时

执行流程如下

 

>当有response、response和view时,执行流程如下

>当四个方法都有时执行流程如下

 

 3、应用场景

> 服务器IP访问频率限制

> URL过滤、用户校验

 

posted @ 2019-01-10 20:54  南辕北辙的天空  阅读(126)  评论(0编辑  收藏  举报