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过滤、用户校验