Django-中间件

一、中间件

  是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。

  每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个:

_init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件
process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象
process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象
process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象
process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象

二、中间件处理流程

            

  如果在处理过程中出现错误,则进行如下处理:

              

三、自定义中间件

  中间件其实就是python中的一个类,所以在自定义中间件只需要遵循类的规则即可。

from django.utils.deprecation import MiddlewareMixin

class MyMiddleWare(MiddlewareMixin):
    def process_request(self, request):
        print('有请求时执行')  # 在这里可以做ip访问拦截器
        
    def process_view(self, request, callback, callback_args, callback_kwargs):
        print('逻辑处理之前执行')

    def process_exception(self, request, exception):
        print('出错时执行')  # 在这里可以进行一些错误处理

    def process_response(self, request, response):
        print('响应后执行,无论是否出错')
        return response

  在中间件定义完后,注意要在settings.py文件中注册自定义的中间件。

  

 

 

      

 

posted @ 2017-08-25 15:28  看雪。  阅读(200)  评论(0)    收藏  举报