【问题标题】:How to import variables in jinja2如何在jinja2中导入变量
【发布时间】:2021-11-08 10:34:08
【问题描述】:

我试图在用户登录并将他重定向到仪表板时显示用户名。 我在 /dashboard 路由中传递了变量,但用户名仅在仪表板页面中可见。 当我路由到不同的页面时,例如主页,然后用户的名字没有显示。 我想在所有页面中显示登录的用户名,但用户名仅在仪表板中可见。

这是来自 app.py 的代码

@app.route('/dashboard')
@login_required
def dashboard():
    return render_template('dashboard.html', name=current_user.user_name)

这是我的 layout.html

<div class="account-info">
     {% if current_user.is_authenticated %}
     <span id="account-name"><a href="/dashboard">{{ name }}</a></span>
     {% else %}
     <span id="account-name"><a href="/dashboard">{{ dname }}</a></span>
     {% endif %}
</div>

这里 dname 是我在用户未登录时传递的变量。

【问题讨论】:

    标签: python variables flask jinja2


    【解决方案1】:

    我认为你应该考虑使用 Session。一旦您的应用程序捕获并验证了用户,您就可以使用会话存储用户名,以使其在请求中可用。

    请参阅此文档: Flask Documentation on Session

    【讨论】:

    • 是的,它有效!谢谢
    【解决方案2】:

    先试试这个

    你只传递了Username类,尝试传递整个类。

    接下来,您可以为经过身份验证的用户创建一个名为 home_auth 或类似名称的新路由,并将默认主页覆盖到 home_auth 页面。

    home_auth页面,可以传入Username并显示出来。

    【讨论】:

    • 但是我没有任何 Username 类,user_name 是我数据库中 User 类的字段。
    • 它托管在 github 上吗?如果是的话,你能把链接发给我吗?
    • 不,它不在github上
    • 有什么方法可以发送 layout.html 和 app.py,可以是 gist 还是图片?
    • 抱歉,我正在做一个项目,不想公开我的代码。请告诉我另一种方法来解决我的问题。
    猜你喜欢
    • 2015-10-02
    • 2017-04-13
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多