中间件

视图函数

 

中间件类

class JsonMiddleware(MiddlewareMixin):
    def process_response(self, request, response):
        if isinstance(response, HttpResponse):
            return response

        if isinstance(response, dict):
            return HttpResponse(
                json.dumps(response, ensure_ascii=True, cls=DateEncoder),
                content_type="application/json",
            )

        return HttpResponse(response)

 

 

setting配置:

 

process_request 方法

process_request 方法有一个参数 request,这个 request 和视图函数中的 request 是一样的。

process_request 方法的返回值可以是 None 也可以是 HttpResponse 对象。

  • 返回值是 None 的话,按正常流程继续走,交给下一个中间件处理。
  • 返回值是 HttpResponse 对象,Django 将不执行后续视图函数之前执行的方法以及视图函数,直接以该中间件为起点,倒序执行中间件,且执行的是视图函数之后执行的方法。

process_response

process_response 方法有两个参数,一个是 request,一个是 response,request 是请求对象,response 是视图函数返回的 HttpResponse 对象,该方法必须要有返回值,且必须是response。

process_response 方法是在视图函数之后执行的。

isinstance函数

 

posted @ 2021-03-01 21:28  半日闲1  阅读(45)  评论(0编辑  收藏  举报