Python 烧瓶模板中的全局变量
可能不是准确的标题,因为我不熟悉flask/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)) 将下面的代码放
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