如何在jinja 2中访问会话变量 - Flask

时间:2017-02-02 21:57:02

标签: python html flask jinja2

我是否需要手动将会话变量从flask传递到我的HTML,还是以某种方式自动发送?

我可以吗

return render_template('index.html')

并访问会话变量用户名,例如html文件中的{{session['username'}}

3 个答案:

答案 0 :(得分:12)

在python中

session['username'] = 'username'

在jinja2中你可以去

{{session['username']}}

答案 1 :(得分:2)

@ bpb101在Jinja2格式上是正确的(尽管省略了空格,正如其他人所提到的)。在HTML / Jinja2模板中,您可以简单地调用session字典而不将其传递给模板:

{{ session['username'] }}

但是,由于变量分配,在Python代码中的另一个示例实际上将用字符串session['username']覆盖'username'的值。如果您尝试将变量设置为session['username']的值,则可以使用:

username = session['username']

否则,如果您仅出于其他原因需要测试或使用该值,则可以直接访问它,例如:

if session['username'] == some_value:
    return "The username is", session['username']

希望这对Flask或Jinja2的新手有帮助,他们可能想知道为什么会覆盖其会话变量。

答案 2 :(得分:1)

如果要使用会话隔离HTML的某些部分,可以直接在这些元素上调用会话:

private void LoadReport(stream filestream,CancellationToken token)
{
 filestream.Close();
 filestream.Dispose();
}