首先,Django文檔中是這樣描述的:Middleware is a framework of hooks into Django’s request/response processing. It’s a light, low-level 「plugin」 system for globally altering Django’s input or output.前端
也就是說中間件是一個鉤子框架,瀏覽器
服務器
框架
Django 在中間件中預置了六個方法,這六個方法的區別在於不一樣的階段執行,對輸入或輸出進行幹
預,方法以下:函數
1.初始化:無需任何參數,服務器響應第一個請求的時候調用一次,用於肯定是否啓用當前中間件。spa
def __init__():
pass插件
2.處理請求前:在每一個請求上調用,返回 None 或 HttpResponse 對象。
def process_request(request):
passcode
3.處理視圖前:在每一個請求上調用,返回 None 或 HttpResponse 對象。
def process_view(request, view_func, view_args, view_kwargs):
pass中間件
4.處理模板響應前:在每一個請求上調用,返回實現了 render 方法的響應對象。對象
def process_template_response(request, response):
pass
5.處理響應後:全部響應返回瀏覽器以前被調用,在每一個請求上調用,返回 HttpResponse 對象。
def process_response(request, response):
pass
6.異常處理:當視圖拋出異常時調用,在每一個請求上調用,返回一個 HttpResponse 對象。
def process_exception(request,exception):
pass
並且
中間件的執行順序很是重要。
在請求視圖被處理後,中間件由下至上