【问题标题】:How to access session variables in jinja 2 - Flask如何在 jinja 2 - Flask 中访问会话变量
【发布时间】:2017-06-20 03:57:30
【问题描述】:

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

可以吗

return render_template('index.html')

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

【问题讨论】:

    标签: python html flask jinja2


    【解决方案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
        猜你喜欢
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        • 2015-06-29
        • 2017-06-09
        • 2020-09-20
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多