python中介軟體
django的中介軟體是全域性範圍內處理django的請求和響應的框架級別的鉤子。
#定義 from django.utils.deprecation import MiddlewareMixin class MD1(MiddlewareMixin): def process_request(self,request): pass #setting中需要註冊 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'app01.middlewares.my_middleware.MD1', 'app01.middlewares.my_middleware.MD2', ]
五個方法
執行時間:
路由匹配之前,process_view方法前
引數:
request 請求的物件 ,和後續的request都是同一個
執行順序:
按照註冊的順序 順序 執行
返回值:
None 正常流程
HttpResponse物件 當前中介軟體之後的中介軟體中的process_request、路由匹配、process_view、檢視都不執行,直接去執行當前中介軟體的process_response方法
process_response(self,request,response):
執行時間:
檢視之後執行
引數:
request 請求的物件 ,和後續的request都是同一個
response 返回給瀏覽器的響應物件
執行順序:
按照註冊的順序 倒序 執行
返回值:
HttpResponse物件 必須返回
process_view(self,request,view_func,view_args,view_kwargs):
執行時間:
路由之後,檢視之前執行
引數:
request 請求的物件 ,和後續的request都是同一個
view_func 檢視函式
view_args 檢視函式所需的位置引數
view_kwargs 檢視函式所需的關鍵字引數
執行順序:
按照註冊的順序 順序 執行
返回值:
None 正常流程
HttpResponse物件 當前中介軟體之後的中介軟體中的process_view、檢視都不執行,直接去執行最後一箇中間件的process_response方法
執行時間(觸發條件):
檢視中有異常時才執行
引數:
request 請求的物件 ,和後續的request都是同一個
exception 異常的物件
執行順序:
按照註冊的順序 倒序 執行
返回值:
None 當前的中介軟體沒有處理異常,交於下一個中間處理,如果所有的都沒有處理,django處理異常
HttpResponse物件 當前的中介軟體處理了異常,後面要執行的process_exception方法就不執行了,執行最後一箇中間件的process_response方法
process_template_response(self,request,response):
執行時間(觸發條件):
檢視返回TemplateResponse物件
引數:
request 請求的物件 ,和後續的request都是同一個
response TemplateResponse物件
執行順序:
按照註冊的順序 倒序 執行
返回值:
HttpResponse物件 必須返回
處理物件
response.template_name 模板的名字