如何在Jinja2模板中访问会话数据(应用引擎上的Bottle框架)?

7 投票
1 回答
8771 浏览
提问于 2025-04-15 21:05

我在谷歌应用引擎上运行一个叫做 Bottle 的微框架。我用 Jinja2 来处理我的模板。还用 Beaker 来管理会话。我还是个Python新手,能做到这些我觉得挺开心的 :) 我想问的是,如何在模板中访问会话数据?我在实际的Python代码中可以轻松获取会话数据。我也可以在每次调用Jinja模板时传递会话数据。但是因为我需要在网站的主菜单栏中使用会话数据……这就意味着我得在每一页都传递一次。有没有人知道我能否直接在模板中访问这些数据?

举个例子,我需要会话数据来显示我的头部链接:

首页 | 常见问题 | 登录

或者

首页 | 常见问题 | 登出

任何帮助都非常感谢!:D

1 个回答

11

如果你想让一些东西在所有模板中都能用,可以把它们添加到 Jinja2 的 全局环境 中。想了解更多信息,可以查看 这个页面

更新:

这里有一个简单的例子,关于你的设置代码:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

然后,在处理请求的代码中:

env.globals['session'] = session # Your session
# Your template can contain things like {{ session['key'] }}
template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')
#return response using rendered data

撰写回答