在客戶端和伺服器互動的過程中,有些準備工作或掃尾工作需要處理,比如:
為了讓每個檢視函式避免編寫重複功能的**,flask提供了通用功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現,flask支援如下四種請求鉤子:
功能:作用:
注意:
#功能:作用:被該裝飾器裝飾的函式會在第一次請求之前呼叫。
#強調:第一次不是指使用者第一次發起請求,而是伺服器第一次接收到請求。
#作用:可以在此方法內部做一些初始化操作,比如連線資料庫
defbefore_first_request():
print("
before_first_request 被執行
")
注意點:
#功能:作用:被該裝飾裝飾的函式會在每一次請求之前呼叫
#作用:可以在這個請求中做一些請求校驗,如果請求的校驗不成功,直接return之後那麼就不會執行檢視函式
defbefore_request():
print("
before_request 被執行
")
#功能:作用:被該裝飾器裝飾的函式會在檢視被成功執行完之後呼叫,並且會把檢視函式return的資料當做引數傳入
#作用:可以在此方法中對響應做最後一步統一的處理,比如修改headers資訊
defafter_request(resp):
print("
after_request 被執行")
resp.headers[
"content-type
"] = "
"return resp
#參考:被該裝飾器裝飾的函式無論每一次請求是否成功都會呼叫
#會接受乙個引數,若檢視執行出錯,引數是伺服器出現的錯誤資訊,反之,為none
#作用:可以用來收集錯誤
defteardown_request(error):
print("
teardown_request 被執行")
iferror:
print(f"
錯誤url:,錯誤原因:")
執行結果圖:
根據執行結果, 可以得出鉤子函式在一次請求中的執行順序, 如下圖:
附碼:from flask import
flask, request
def)
#被該裝飾器裝飾的函式會在第一次請求之前呼叫。
#強調:第一次不是指使用者第一次發起請求,而是伺服器第一次接收到請求。
#作用:可以在此方法內部做一些初始化操作,比如連線資料庫
defbefore_first_request():
print("
before_first_request 被執行")
#被該裝飾裝飾的函式會在每一次請求之前呼叫
#作用:可以在這個請求中做一些請求校驗,如果請求的校驗不成功,直接return之後那麼就不會執行檢視函式
defbefore_request():
print("
before_request 被執行")
#被該裝飾器裝飾的函式會在檢視被成功執行完之後呼叫,並且會把檢視函式return的資料當做引數傳入
#作用:可以在此方法中對響應做最後一步統一的處理,比如修改headers資訊
defafter_request(resp):
print("
after_request 被執行")
resp.headers[
"content-type
"] = "
"return
resp
#被該裝飾器裝飾的函式無論每一次請求是否成功都會呼叫
#會接受乙個引數,若檢視執行出錯,引數是伺服器出現的錯誤資訊,反之,為none
#作用:可以用來收集錯誤
defteardown_request(error):
print("
teardown_request 被執行")
iferror:
print(f"
錯誤url:,錯誤原因:")
檢視函式檔案#"
/login/")
deflogin():
print("
login檢視被執行")
return
"登入成功""
/create/")
defcreate():
print("
create檢視被執行")
return
"建立成功""
/error/")
deferror():
print("
error檢視被執行")
a = 1/0
return"ok
"if__name__ == '
__main__
':
Flask 請求鉤子
flask中具有四種鉤子被做成了修飾器,我們在後端可以進行呼叫做相關的操作.功能 defindex print 哈哈哈哈 return 哈哈哈 defbefore first request print 這是第乙個鉤子,只在第乙個請求之前呼叫,第乙個請求之後不再呼叫 效果 注意點 在每次請求的之前呼...
Flask 請求鉤子
首先了解下flask設計請求鉤子的作用是什麼,其實請求鉤子就是為了讓每個檢視函式避免編寫重複功能的 設施的功能。其實和scrapy,django中的中介軟體有點相似之處。請求鉤子的設計能夠很有效的提高 的質量,以及實現一些很好的應用場景。falsk有以下幾種鉤子 在處理第乙個請求前執行.應用場景 比...
Flask 請求鉤子
在django中有中介軟體這個類來做一些檢視執行前 執行中 執行後的一些額外業務處理,那麼在flask則是採用請求鉤子的方式來處理。在客戶端和伺服器互動的過程中,有些準備工作或掃尾工作需要處理,比如 在請求開始時,建立資料庫連線 在請求結束時,指定資料的互動格式。為了讓每個檢視函式避免編寫重複功能的...