程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

手寫一個django middleware

編輯:Python

實現

在app裡新建一個performance.py文件,用來定義我們的中間件函數,這裡實現的函數功能為記錄頁面的訪問時間。

import time
import logging
logger = logging.getLogger(__name__)
def performance_logger_middleware(get_response):
def middleware(request):
# 計算響應耗時
start_time = time.time()
response = get_response(request)
duration = time.time() - start_time
# 在response header中寫入頁面訪問耗時的屬性
response["X-Page-Duration-ms"] = int(duration * 1000)
# 載入日志
logger.info("%s %s %s", duration, request.path, request.GET.dict() )
return response
return middleware

隨後在django項目設置文件裡面注冊中間件,我的performance.py文件是創建在interviewapp裡面的,所以我引入的鏈接為interview.performance.performance_logger_middleware

測試

這裡我已經設置了將日志打印至命令行以及寫入日志文件,具體配置請查看django文檔中日志部分。

至此,一個簡單的中間件就實現了,同樣的,也可以使用類的方法類定義一個中間件(可以參考django中間件的源碼,都是基於類的方法類定義中間件的),本文例子中使用函數的方法定義只是為了方便。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved