如何在扩展模板中获取变量

2024-05-29 00:08:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在flask应用程序中制作了一个导航条,位于一个html文件中,该文件扩展到所有其他文件。在导航栏中,我有以下代码:

<ul class="navbar-nav">
    <li class="nav-item">
        <a class="nav-link active" aria-current="page" href="/">Home</a>
    </li>
    {% if 'user' in session %}
        <li class="nav-item">
            <a class="nav-link" href="/signup">Sign Up</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="/login">Login</a>
        </li>
    {% else %}
        <li class="nav-item">
            <a class="nav-link" href="/logout">Logout</a>
        </li>
    {% endif %}
</ul>

我在flask会话中保存了一个dictionary元素“user”,希望能够将其发送到base.html页面。在其他页面中,我使用{% extends "base.html" %}获取navbar,但是如果我想传递sessions变量,我必须通过base.html文件和扩展它的其他文件发送它。有没有办法绕过这个问题


Tags: 文件应用程序flaskbasehtmllink页面li
1条回答
网友
1楼 · 发布于 2024-05-29 00:08:37

您正在寻找的是一个上下文处理器。将此函数添加到具有@app.route('/')视图函数的同一文件中,您加载到下面的template_config字典中的所有变量都将在任何template.html文件中可用

# Global HTML template variables.
@app.context_processor
def set_global_html_variable_values():
    if session.get('user'):
        user_in_session = True
    else:
        user_in_session = False
    template_config = {'user_in_session': user_in_session}
    return template_config





(base.html file)
{% if user_in_session %}
    <li class="nav-item">
        <a class="nav-link" href="/signup">Sign Up</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="/login">Login</a>
    </li>
{% else %}
    <li class="nav-item">
        <a class="nav-link" href="/logout">Logout</a>
    </li>
{% endif %}

相关问题 更多 >

    热门问题