如何在 jinja 2 - Flask 中访问会话变量
Posted
技术标签:
【中文标题】如何在 jinja 2 - Flask 中访问会话变量【英文标题】:How to access session variables in jinja 2 - Flask 【发布时间】:2017-06-20 03:57:30 【问题描述】:我需要手动将会话变量从 Flask 传递到我的 html 还是以某种方式自动发送?
可以吗
return render_template('index.html')
并访问会话变量username
,例如HTML文件中的session['username'
?
【问题讨论】:
【参考方案1】:@bpb101 在 Jinja2 格式上是正确的(尽管像其他人提到的那样省略了空格)。在 HTML/Jinja2 模板中,您可以简单地调用 session
字典而不将其传递给模板:
session['username']
但是,在 Python 代码中的另一个示例实际上会用字符串 'username'
覆盖 session['username']
的值,这是由于变量分配。如果您尝试将变量设置为 session['username']
的值,您将使用:
username = session['username']
否则,如果您只是出于其他原因需要测试或使用该值,您可以直接访问它,例如:
if session['username'] == some_value:
return "The username is", session['username']
希望这对刚接触 Flask 或 Jinja2 的人有所帮助,他们可能想知道为什么他们的会话变量会被覆盖。
【讨论】:
【参考方案2】:如果您想使用会话隔离 HTML 的某些部分,您可以直接在这些元素上调用会话:
% if session['username'] %
<li>Logout</li>
% endif %
【讨论】:
【参考方案3】:在python中
session['username'] = 'username'
在jinja2你可以去
session['username']
【讨论】:
注意是 session['username']
(加空格)
是否可以反过来使用会话变量:即。 set session['username'] = 'username'
在模板中?
烧瓶教程展示了点符号的使用,例如session.logged_in
。参考:flask.pocoo.org/docs/0.12/tutorial/templates以上是关于如何在 jinja 2 - Flask 中访问会话变量的主要内容,如果未能解决你的问题,请参考以下文章