1. 程式人生 > >Django中間件

Django中間件

exceptio exce none 之前 req settings 插件 style http

1. 中間件概念

  中間件是一個用來處理Django的請求和響應的框架級別的鉤子。它是一個輕量、低級別的插件系統,用於在全局範圍內改變Django的輸入和輸出。每個中間件組件都負責做一些特定的功能。作用在wsgiref和url.py之間,客戶端往服務端傳遞消息時根據HTTP協議傳送的信息會先正向經過中間件,服務端給客戶端傳遞消息時會反向經過中間件

2. 如何自定義中間件

  1. 按照格式要求寫一個類

  2. 把我們寫好的類在settings.py註冊到MIDDLEWARE配置項的列表中

3. 每一個中間件中五個可以被重寫的方法:

  1. process_request(self,request)

1. 何時執行在  urls.py之前執行

2. 執行的順序  按照在列表中註冊的順序依次執行

3. 返回值  1. 返回None, 不錯任何處理直接進行下一步  

      2. 返回響應對象, 直接跳出(後續中間件的process_request、不執行urls.py和views.py)返回響應

2. process_view(self, request, view_func, view_args, view_kwargs)

1. 執行時間: 在urls.py之後在執行真正的視圖函數之前

2. 執行順序  按照在列表中註冊的順序依次執行

3. 返回值  1. 返回None, 放行  2. 返回響應對象,就直接跳出,倒序依次執行所有中間件的process_response方法


3. process_template_response(self,request,response)

4. process_exception(self, request, exception)


5. process_response(self, request, response)

  1. 何時執行在  views.py返回響應對象之後執行

  2. 執行的順序  按照在列表中註冊的倒序依次執行

  3. 返回值  必須要有返回值,返回要是 響應對象

Django中間件