Python 烧瓶模板中的全局变量

Python 烧瓶模板中的全局变量,python,flask,jinja2,Python,Flask,Jinja2,可能不是准确的标题,因为我不熟悉flask/python。我正在开发一个内部工具,将由不同的团队使用。每个团队都有不同的部署阶段,例如,alpha,beta | test,prod,他们也有多个区域,例如,NA,EU,AP等 现在,当我使用redirect\u模板时,我将stage和region作为变量发送,然后在模板中使用。但是,为每个重定向\u模板执行操作有点麻烦。有没有更好的办法 我假设您的Flask对象的名称是app(即app=Flask(\uuu name\uuuu)) 将下面的代码放

可能不是准确的标题,因为我不熟悉flask/python。我正在开发一个内部工具,将由不同的团队使用。每个团队都有不同的部署阶段,例如,
alpha
beta | test
prod
,他们也有多个区域,例如,
NA
EU
AP


现在,当我使用
redirect\u模板
时,我将
stage
region
作为变量发送,然后在模板中使用。但是,为每个
重定向\u模板执行操作有点麻烦。有没有更好的办法

我假设您的
Flask
对象的名称是
app
(即
app=Flask(\uuu name\uuuu)

将下面的代码放在
应用程序
初始化之后

@app.context_processor
def inject_stage_and_region():
    return dict(stage="alpha", region="NA")
在Jinja模板中,
“alpha”
“NA”
可以被
{stage}
{region}
引用

烧瓶文件:

为了将新变量自动注入模板的上下文,Flask中存在上下文处理器。上下文处理器在呈现模板之前运行,并且能够将新值注入模板上下文。上下文处理器是一个返回字典的函数。然后,对于应用程序中的所有模板,此字典的键和值将与模板上下文合并


如果我必须根据用户的操作更改此值,该怎么办。假设用户单击stage name并希望将其更改为
beta
。如何更新
上下文处理器的新阶段?(1)将用户配置保存在数据库/会话/cookie中。。。基于用户的操作。(我想这已经完成了。)(2)在
上下文处理器中,获取相应的信息。请注意,您可以访问烧瓶全局变量,如
会话
g
。(例如,
stage=session[“stage”]
)(3)返回结果(例如,
返回dict(stage=stage)
)。如何在python代码中获取/设置全局变量?比如
jinja.globals['counter']=jinja.globals['counter']+1