django-自定义中间件

django的中间件
中间件是嵌入 django 的 request/response 处理过程的一套钩子框架。它是一个轻量级的底层嵌入系统,可以对 django 的输入输出做整体的修改。
django中间件
使用场景
1、如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。
2、可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现。
3、比如我们写一个判断浏览器信息,是pc还是手机。我们不想把这个逻辑加到视图函数里,想作为一个通用服务,作为一个可插拔的组件被使用,最好的方法就是实现为中间件。

使用方法
Django中间件必须是一个类,不需要继承任何类,并提供四个接口:
1、 process_request(self, request)该方法在请求到来的时候调用。
2、 process_view(self ,request, fnc , arg ,kwarg)在本次将要执行的View函数被调用前调用本函数。
3、 process_response(self,request,response)在执行完View函数准备将响应发到客户端前被执行。
4、 **process_exception(self,request, exception)**View函数在抛出异常时该函数被调用,得到的exception参数是实际上抛出的异常实例。通过此方法可以进行很好的错误控制,提供友好的用户界面。

要激活中间件,需要把它添加到Django 配置文件settings.py中的MIDDLEWARE中。

例:需要检测浏览器版本信息。

1、app下新建 middleware.py文件
2、middleware.py中实现自定义中间键类

from django.http import HttpResponse
from django.shortcuts import render

try:
    from django.utils.deprecation import MiddlewareMixin  # Django 1.10.x
except ImportError:
    MiddlewareMixin = object  # Django 1.4.x - Django 1.9.x

class CheckVersionsMiddleware(MiddlewareMixin):
    def process_request(self, request):
        if 'rv:11.0' in request.META["HTTP_USER_AGENT"]:
            return render(request,"xxx.html")
            # return render(request,"upgrade.html")
        return None

3、settings.py中激活自定义中间件
MIDDLEWARE 中添加中间件, ‘app_name.middleware.CheckVersionsMiddleware’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值