Python 如何在Jinja2模板中使变量永久化?

Python 如何在Jinja2模板中使变量永久化?,python,jinja2,Python,Jinja2,我正在使用Jinja2和Python2.7与AppEngine 在请求处理程序中,我想设置一个永久变量Jinja2变量,这样它就可以用于所有Jinja2模板。具体来说,这是针对一个用户对象的,所以我总是可以拉出用户名,在他们登录时显示在站点的所有页面上 我读过这个问题和答案: 但是当我尝试它时,session变量似乎不是永久的。E当我浏览到另一个模板时,会话变量不再存在 如何设置永久变量?它会为每个用户单独设置吗 谢谢你的帮助 每次请求都创建Jinja环境时,不会保存变量。Webapp2具有会话

我正在使用Jinja2和Python2.7与AppEngine

在请求处理程序中,我想设置一个永久变量Jinja2变量,这样它就可以用于所有Jinja2模板。具体来说,这是针对一个用户对象的,所以我总是可以拉出用户名,在他们登录时显示在站点的所有页面上

我读过这个问题和答案:

但是当我尝试它时,session变量似乎不是永久的。E当我浏览到另一个模板时,会话变量不再存在

如何设置永久变量?它会为每个用户单独设置吗


谢谢你的帮助

每次请求都创建Jinja环境时,不会保存变量。Webapp2具有会话、Jinja和保存数据所需的所有功能。

您是否检查了这是会话问题还是Jinja问题?会话相关代码中的错误似乎比著名的模板引擎无法简单地接受变量更容易发生。我同意,我只是不确定我链接的答案是否真的有效。使用这个答案,它现在起作用了。我之前的错误是,为了测试变量是否被永久设置,我将执行一个设置变量的请求,然后注释掉设置变量的行,并执行相同的请求,以查看它是否仍然可用。出于某种原因,这不起作用。但是如果我在一个请求中设置了这个变量,它在其他Jinja2模板中也可以使用。谢谢你的回答。我看了一眼,就知道了。你是说每次处理请求时,我都必须执行类似于
context={'user':self.current\u user}返回self.render\u response('user\u profile.html',**context)
?谢谢。我想(我还没有试过)webapp2和webapp2 extras jinja可以保存环境对象。我还认为可以将全局变量添加到此环境对象。Jinja全局命名空间文档声明:“存储在Environment.globals dict中的变量非常特殊,因为它们也可用于导入的模板,即使它们是在没有上下文的情况下导入的。”感谢您的帮助。我的测试,看看它是否会工作没有工作,由于某种原因,见上述评论。