我是否需要手动将会话变量从flask传递到我的HTML,还是以某种方式自动发送?
我可以吗
return render_template('index.html')
并访问会话变量用户名,例如html文件中的{{session['username'}}
?
答案 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();
}