Django基础教程(151)Django中间件之编写中间件:揭秘Django的“隐形关卡”:中间件,不只是个“看门的”!

一、Django请求的“奇幻漂流”

想象一下,一个HTTP请求,就像是一个想去你Django应用这个“夜店”玩耍的客人。

  1. 客人(请求) 到了夜店门口。
  2. 保安队长(WSGI Server) 接了他,然后把他交给了内部领班(Django)
  3. 领班 没有直接带他去卡座(View),而是让他必须穿过一条长长的、有多个服务站的走廊。

这条走廊,就是我们的中间件栈(Middleware Stack)

在这条走廊上,每个服务站(中间件)都可以对客人做点事情:

  • 第一个服务站(SecurityMiddleware):检查客人身上有没有带违禁品(安全检测)。
  • 第二个服务站(SessionMiddleware):发给他一个独一无二的手环(Session ID),凭这个手环可以认人。
  • 第三个服务站(CommonMiddleware):看看他的着装是否得体(APPEND_SLASH 等通用处理)。
  • 第四个服务站(CsrfViewMiddleware):让他对个暗号,防止他是竞争对手派来捣乱的(CSRF保护)。

……经过一系列服务站后,客人终于见到了卡座的主人(View),开始嗨皮(执行业务逻辑)。

嗨皮完了,客人要回家(返回响应),他还得原路返回,再经过这条走廊。这时候,每个服务站又可以对他“指手画脚”一下,比如往他的包里塞张优惠券(修改响应内容),或者记下他今晚消费了多少(记录日志)。

这个“请求来时”和“响应走时”都能插一脚的走廊服务站,就是Django中间件! 它强大就强大在,它能全局性地、无侵入地影响整个Django应用的处理流程。

二、解剖一个中间件:它到底长啥样?

一个自定义中间件,本质上就是一个Python类,里面定义了那么一两个到五个像魔法一样的方法。Django会在特定的时机去调用它们。

最最最常用的两个方法是:

  • process_request(self, request)
    • 时机:请求刚进来,还没路由到视图之前。
    • 作用:你可以在这里“盘问”请求。比如检查用户是否登录、检查IP是否在黑名单。
    • 返回值
    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值