Flask 应用上下文

应用上下文(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()
原文地址:https://www.cnblogs.com/Niuxingyu/p/10152866.html