1. 程式人生 > >Flask 應用上下文

Flask 應用上下文

常量 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 應用上下文