10.中間鍵Middleware

中間鍵Middlewaredjango

01.中間件顧名思義:
  是介於request與response處理之間的一道處理過程,相對比較輕量級,
  而且在全局上改變django的輸入與輸出。由於改變的是全局,因此須要謹慎實用,用很差會影響到性能。服務器

02.自定義中間件session

  中間件中一共有四個方法:
    process_request
    process_view
    process_exception
    process_responseapp

  <1>建立一箇中間鍵.py文件函數

 1 from django.utils.deprecation import MiddlewareMixin  2 class CustomerMiddleware(MiddlewareMixin):  3  4 def process_request(self, request):  5 # 請求發出後,進入,沒有返回值  6 print("CustomerMiddleware process_request")  7 #return HttpResponse("process_request中斷")  8  9 def process_response(self, request, response): 10 # 視圖函數走完以後進入,必須有返回值 11 print("CustomerMiddleware process_response") 12 return response # 返回的response必須加返回值,不然會報錯 13 14 def process_view(self, request, callback, callback_args, callback_kwargs): 15 #走過視圖以後進入_view 16 print("Md1view") 17 18 def process_exception(self, request, exception): 19 # 若是視圖函數有錯誤,則走_exception,加參數exception進行錯誤捕獲, 20 # 捕獲後將執行process.response 21 print("md1 process_exception...") 22 return HttpResponse(exception)

 

  <2>在settings.py中添加本身的中間鍵所在的地址性能

發起請求 proccess_request 從上到下依次通過中間鍵middleware
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.my_middlewares.CustomerMiddleware' # 添加本身的中間鍵:路徑.文件名.類名
]
視圖函數views process_response 從下到上依次通過中間鍵middlewarespa


03.應用案例code

一、作IP訪問頻率限制
某些IP訪問服務器的頻率太高,進行攔截,好比限制每分鐘不能超過20次。csrf

二、URL訪問過濾
若是用戶訪問的是login視圖(放過)
若是訪問其餘視圖,須要檢測是否是有session認證,已經有了放行,沒有返回login,這樣就免得在多個視圖函數上寫裝飾器了!中間件

相關文章
相關標籤/搜索