Django系列--尝试写个midlleware(中间件)

中间件(Middleware)是一个介入Django的请求和响应的处理过程中的钩子框架。 它是一个轻量级, 底层的“插件”系统, 用于在全局修改Django的输入或输出。中间件组件责任处理某些特殊的功能。

读以上这段话,可以得知中间件的定位

1.请求和响应处理过程中的钩子框架;

2.底层的“插件”系统

3.全局的,且能修改Request、Response的;

所以,中间件在Django中,可谓“权利很大”,使用得注意场景。更多的说明,烦请参考官文,我只是简单的写个例子,不过多说明,代码胜过一切言语。

class CommonMiddleware(object):
    """
    将请求IP放入到django cache中,统计在线IP数
    """
    def process_request(self, request):
        if 'HTTP_X_FORWARD_FOR' in request.META:
            ip = request.META['HTTP_X_FORWARD_FOR']
        else:
            ip = request.META['REMOTE_ADDR']
        online_ips = cache.get('onlineips', [])
        if online_ips:
            online_ips = cache.get_many(online_ips).keys()
        cache.set(ip, 0, 5 * 60)
        if ip not in online_ips:
            online_ips.append(ip)
        cache.set('onlineips', online_ips)

 

转载于:https://my.oschina.net/daqing15/blog/910249

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值