11.Flask鈎子函數


     在Flask中鈎子函數是使用特定的裝飾器的函數。為什么叫做鈎子函數呢,是因為鈎子函數可以在正常執行的代碼中,插入一段自己想要執行的代碼,那么這種函數就叫做鈎子函數。

  • before_first_request:Flask項目第一次部署后會執行的鈎子函數。
  • before_request:請求已經到達了Flask,但是還沒有進入到具體的視圖函數之前調用。一般這個就是在函數之前,我們可以把一些后面需要用到的數據先處理好,方便視圖函數使用。

before_request

@app.before_first_request
def first_request():
    print('只有在處理第一次請求之前執行')

@app.before_request
def before_request():
    print('在視圖函數執行之前執行')

 

context_rocessor

 只用這個鈎子函數,必須返回一個字典。這個字典的值在所有模板中都可以使用。這個鈎子函數的作用是,如果一些在很多模板中都要用到的變量,那么就可以使用這個鈎子函數來返回,而不是在每個視圖函數匯總的render_template中去寫,這樣可以讓代碼更加簡潔和好維護。

@app.context_processor
def context_rocessor():
    return {{'current_user':'xxx'}}

 

 errorhandler

在發生異常的時候,比如404,500錯誤,自定義錯誤的頁面,在errorhangdler裝飾的鈎子函數下:

  • 要返回狀態碼
  • 必須寫一個參數,來接受錯誤的信息

使用flask.abort可以手動的拋出相應的錯誤,比如開發者發現參數不正確的時候可以手動的拋出一個404錯誤。

@app.errorhandler(500)
def server_error(error):
    return render_template('500.html'),500

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'),404

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM