Flask 應用上下文
阿新 • • 發佈:2018-12-21
常量 tro 程序 nbsp color __main__ request 數據庫連接 conf
應用上下文(application context)
它的字面意思是 應用上下文,但它不是一直存在的,它只是request context 中的一個對 app 的代理(人),所謂local proxy。它的作用主要是幫助 request 獲取當前的應用,它是伴 request 而生,隨 request 而滅的。
應用上下文對象有:current_app,g
current_app
應用程序上下文,用於存儲應用程序中的變量,可以通過current_app.name打印當前app的名稱,也可以在current_app中存儲一些變量,例如:
應用的啟動腳本是哪個文件,啟動時指定了哪些參數
加載了哪些配置文件,導入了哪些配置
連了哪個數據庫
有哪些public的工具類、常量
應用跑再哪個機器上,IP多少,內存多大
current_app.name(打印文件名)
current_app.test_value=‘value‘
from flask import Flask, current_app, g app = Flask(__name__) app.config.from_pyfile(‘config.ini‘) @app.route(‘/‘) def index(): # current_app模塊用來存儲當前應用的具體配置信息 print(current_app.__dict__) if __name__ == "__main__": app.run()
g變量
g 作為 flask 程序全局的一個臨時變量,充當者中間媒介的作用,我們可以通過它傳遞一些數據,g 保存的是當前請求的全局變量,不同的請求會有不同的全局變量,通過不同的thread id區別
g.name=‘abc‘
註意:不同的請求,會有不同的全局變量
兩者區別:
請求上下文:保存了客戶端和服務器交互的數據
應用上下文:flask 應用程序運行過程中,保存的一些配置信息,比如程序名、數據庫連接、應用信息等
導包文件:
from flask import Flask, g def check_username(): username= ‘你好‘ g.username = ‘789‘ g.name = "222" print(username)
配置文件:
from flask import Flask, current_app, g # 從自定義的工具文件內部引用check_username方法 from utils import check_username app = Flask(__name__) app.config.from_pyfile(‘config.ini‘) @app.route(‘/‘) def index(): # 打印全局對象g裏自定義的屬性username check_username() print(g.name) return g.username if __name__ == "__main__": app.run()
Flask 應用上下文