django的中介軟體---介紹與重寫
阿新 • • 發佈:2018-12-12
django 中的中介軟體(middleware),在django中,中介軟體其實就是一個類,在請求到來和結束後,django會根據自己的規則在合適的時機執行中介軟體中相應的方法。
在django專案的settings模組中,有一個 MIDDLEWARE_CLASSES 變數,其中每一個元素就是一箇中間件, 如下:
MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', )
在專案同名資料夾裡面建立新的叫middleware.py的檔案,在裡面重寫中間類:
class NewMid(): def __init__(self): print('這是hi我們的中介軟體的init') def process_request(self, request): '''處理請求之前''' print('process_request') def process_view(self,request,view_func,*args,**kwargs): '''處理檢視之前''' print('process_view') # def process_response(self, request, response): # '''處理響應完成之後''' # print('process_response') def process_exception(self,request,exception): '''異常處理''' # raise Exception('我是異常') 寫在視圖裡面,這裡做的示範 print('process_exception')
然後在專案資料夾的setting裡面MIDDLEWARE_CLASSES裡,註冊並關聯這個這個中間類:
'watercar.middleware.NewMid', #與minddleware.NewMid 產生關聯
這樣就完成了中介軟體的重寫,如果你想在’’‘處理請求之前’’’、’’‘處理檢視之前’’’、’’‘處理響應完成之後’’’ 等,這些時間裡做什麼就直接可以做了。