比如這裡要新增乙個統計響應時間的功能新建乙個middlewares.py (student_sys/student/middlewares.py)
import time
from django.urls import reverse
from django.utils.deprecation import middlewaremixin
class
timeitmiddleware
(middlewaremixin)
:def
process_request
(self,request)
: strs =
"1. 處理requset請求,第乙個被呼叫,"
"處理request中認證頭之類"
print
(strs)
return
defprocess_view
(self,request,func,
*args,
**kwargs)
: strs =
"2. 用於view處理,其中func即是呼叫的view"
print
(strs)
if request.path != reverse(
'index'):
return
none
start = time.time(
)#這裡呼叫了view做處理
response = func(request)
costed = time.time(
)- start
print
("process view used %d seconds"
%(costed,))
return response
defprocess_exception
(self,request,exception)
: strs =
"0. 用來處理全部流程中的異常"
print
(strs)
pass
defprocess_template_response
(self,request,response)
: strs =
"3. 如果處理渲染模板使用了render,就會呼叫到這裡"
print
(strs)
return response
defprocess_response
(self,request,response)
: strs =
"4. 所有的流程執行完後會返回response給瀏覽器,在返回之前會呼叫到這裡"
print
(strs)
return response
修改setting.py
middleware =
['student.middlewares.timeitmiddleware'
,'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'
,]
在瀏覽器上重新整理頁面觀察後台輸出
13 2 7 中介軟體
中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。如果你想修改請求,例如被傳送到view中的httprequest物件。或者你想修改view返回的htt...
21 中介軟體
一 中介軟體的定義 1.中介軟體是django請求 響應處理的鉤子框架,它是乙個輕量級的 低階的 外掛程式 系統,用於全域性改變django的輸入或輸出 2.中介軟體以類的形式體現 3.每個中介軟體元件負責做一些特定的功能,例如django包含乙個中介軟體元件 authenticationmiddl...
07 中介軟體
5 獲取的資料會交給最後乙個中介軟體的process response方法處理,然後依次向前面的中介軟體process response 6 在任一中介軟體的process request和process view方法中有返回值就會直接返回給process response 3 檢視函式 4 中介軟...