django中間是一個輕級,低耦合的外掛,用來改變全域性的輸入和輸出。
一 如何使用中介軟體
- 定義中介軟體
- 註冊中介軟體
# 這是一箇中介軟體程式碼片段的說明,在各個位置的程式碼將在何時執行 def simple_middleware(get_response): # One-time configuration and initialization. def middleware(request): # Code to be executed for each request before # the view (and later middleware) are called. response = get_response(request) # Code to be executed for each request/response after # the view is called. return response return middleware
get_response有可能是django實際的檢視函式,也有可能是下一個中介軟體,我們不必要具體知道get_response到底是什麼,只需要知道get_response是下一個需要處理的函式。
註冊中介軟體
# 需要在配置檔案中加入自定義中介軟體 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`, `path.to.middleware.simple_middleware`, ]
中介軟體的執行順序依據配置檔案中定義的順序依次執行。
二 使用中介軟體實現所有請求前進行認證
def auth_middleware(get_response): def middleware(request): if not user.is_authented: # 這個地方要特殊處理一下,不然遇到login介面也會一直重定向 ... return HttpResponseRedirect(`/login`) response = get_response(request) return response return middleware