天天看點

中間件

視圖函數

中間件
中間件類

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函數

中間件