如何将自定义变量传递到Python Flask应用的路由函数中
在Flask框架中,路由装饰器默认只会将URL路径中匹配的参数传递给视图函数,你写的写法会直接抛出参数缺失的报错,非URL来源的业务变量可以通过以下几种方式传入视图函数:
方法1:存入应用配置(适合固定不频繁变更的全局业务变量)
先在你的业务代码中将变量存入app的全局配置中:
# 业务逻辑中拿到myvariable后存入配置 app.config['MY_VARIABLE'] = myvariable
视图函数内直接读取即可:
@app.route("/myrout", methods=["GET"]) def myfunction(): myvariable = app.config['MY_VARIABLE'] # 后续业务逻辑
方法2:用functools.partial绑定参数(适合动态传参场景)
from functools import partial # 先定义不带路由装饰的视图函数 def myfunction(myvariable): # 你的业务逻辑 pass # 业务代码拿到myvariable后,绑定参数再注册路由 myvariable = 业务侧拿到的变量 app.route("/myrout", methods=["GET"])(partial(myfunction, myvariable=myvariable))
方法3:用闭包封装(适合变量仅给当前视图使用的场景)
def register_my_route(myvariable): @app.route("/myrout", methods=["GET"]) def myfunction(): # 直接使用外层传入的myvariable print(myvariable) # 后续业务逻辑 return myfunction # 业务代码拿到变量后调用注册即可 myvariable = 业务侧拿到的变量 register_my_route(myvariable)
多进程/多线程部署场景下,尽量不要用全局变量传递参数,避免出现读写异常。
内容的提问来源于stack exchange,提问作者Admia
相关产品推荐
相关产品推荐

