Flask的g對象 g可以可以看作是單詞global的縮寫,使用“from flask import g”導入,g對象的作用是保存一些在一次請求中多個地方的都需要用到的數據,這些數據可能在用到的時候都需要去進行判斷或其他處理之後才能獲得,如果在第一次獲取的時候就存放到g對象中,就可以避免一些不必要的 ...
Flask的g對象
g可以可以看作是單詞global的縮寫,使用“from flask import g”導入,g對象的作用是保存一些在一次請求中多個地方的都需要用到的數據,這些數據可能在用到的時候都需要去進行判斷或其他處理之後才能獲得,如果在第一次獲取的時候就存放到g對象中,就可以避免一些不必要的操作。比如在某一個函數中定義了“g.username='Jason'”(可能為了定義這個值,會進行一些別的操作,比如資料庫查詢判斷等,定義好了這個值後就不用再每次用到它的時候都去進行這些操作了),那麼在其他地方就可以直接使用“g.username”來獲取這個值,或者使用“hasattr(g, 'username')”判斷g中有沒有這個值,需要特別註意的是當你處理完這次請求並返回數據給客戶端瀏覽器後,這個g對象中所有的值都會被刪除掉,也就是它只有在一次請求中有效。
Flask鉤子函數(hook)
鉤子(hook)函數最大的特點其實就是會將定義的鉤子函數在某個特定的位置自動執行,而不用每次需要用到的時候手動去定義它的執行,當然不同的鉤子函數有不同作用和效果。常用的鉤子函數有(app為Flask對象):
- app.before_request:是一個裝飾器,被裝飾的函數會在請求處理之前執行(即執行視圖函數之前執行)。
- app.context_processor:是一個裝飾器,被裝飾的函數一般返回一個字典,字典中的key字元串會被渲染為HTML頁面中的變數,變數的值就是對應key的value,重點在於返回的這個字典可以在任何HTML頁面中直接使用,而不用通過url傳參的方式傳入HTML中。