比较上下文处理器变量和布尔值时出错

时间:2019-05-17 19:39:11

标签: flask jinja2

我无法将上下文处理器定义的变量的值与布尔值进行比较。

我有一个变量logged_in,该变量用于确定用户是否已登录。在导航栏中(位于布局html文件(所有其他文件都从中继承)中找到)中有一个如果用户未登录,应该显示一个登录表单,如果用户已登录,则显示一个“注销”按钮。要访问logged_in变量,我使用了上下文处理器。当我将此变量与TrueFalse进行比较时,会发生问题。我最初的if语句是:

{% if {{ logged_in }} == True %}

但是,当我运行它时,出现错误:

jinja2.exceptions.TemplateSyntaxError: expected token ':', got '}'

当我在{{ logged_in }}周围加上引号时,错误消失了。但是,该语句始终为假。在将变量明确定义为True之后,if语句将不会执行。如果我添加了如下引号:{% if "{{ logged_in }} == True" %},则即使log_in等于False,也会始终执行if语句。我不确定问题出在哪里,因此这里是上下文处理器,以防万一:

@app.context_processor
def logged_in_status():
    return dict(logged_in=logged_in)

这是整个if语句的样子:

{% if {{ logged_in }} == True %}
    <form class="form-inline my-2 my-lg-0" action="{{ url_for('logout') }}" method="POST">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">{{ logged_in }}</button>
    </form>
{% else %}
    <form class="form-inline my-2 my-lg-0" action="{{ url_for('login') }}" method="POST">
        <input class="form-control mr-sm-2" name="username" type="text" placeholder="{{ logged_in }}" aria-label="username">
        <input class="form-control mr-sm-2" name="password" type="password" placeholder="Password" aria-label="password">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Login</button>
    </form>
{% endif %}

有什么建议吗?

0 个答案:

没有答案