Django自定义中间件

django中间件是嵌入 django 的 request/response 处理过程的一套钩子框架。它是一个轻量级的底层嵌入系统,可以对 django 的输入输出做整体的修改

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中。


例如:判断请求的终端是pc还是iPhone:

1.我们在app下建立一个my_middleware.py的文件:

from django.utils import deprecation


class CheckSourceMiddleware(deprecation.MiddlewareMixin):
    def process_request(self, request):
        from_source = request.META['HTTP_USER_AGENT']
        print('from_source', from_source)
        if 'iPhone' in from_source:
            request.session['from_source'] = 'iphone'
        else:
            request.session['from_source'] = 'pc'

2.在views.py文件中加一下代码:

def index(request):
    from_source = request.session.get('from_source', 'unknow')
    res = 'from %s' % from_source
    return HttpResponse(res)

3.在settings.py文件的MIDDLEWARE数组中加入:

'app_name.my_middleware.CheckSourceMiddleware',


以上,我们访问index视图的时候,就会得到我们是以电脑打开的还是以iphone手机打开的


你可能感兴趣的:(django)