Flask中如何在@app.before_request与@app.route间非全局传递变量
Flask中@app.before_request向@app.route传递变量的最佳方式(无全局变量)
- 可行性:完全可行,Flask内置了专门的机制解决这类请求内数据传递问题。
- 最佳实现方式:使用Flask提供的
g对象。g是请求上下文专属的临时存储对象,每个请求都会生成独立的g实例,仅在当前请求周期内有效,既不会跨请求污染数据,也不属于全局变量范畴。
代码示例:
from flask import Flask, g app = Flask(__name__) @app.before_request def before_request(): # 将变量绑定到g对象 g.x = 'anything' @app.route('/') def root(): # 从g对象中读取变量 return f"获取到的x值:{g.x}"
说明:g对象是Flask为请求处理流程量身设计的临时数据载体,可在请求的各个处理阶段(如前置钩子、视图函数、后置钩子)之间安全传递数据,请求结束后该对象会被自动销毁,不存在全局变量的副作用问题。
内容的提问来源于stack exchange,提问作者SpongeB0B
相关产品推荐
相关产品推荐

