0

我有这个代码:

{% if username_is_ok == True %}
    <input type="text" name="inputName" placeholder="Name" required>
{% else %}
    <div class="control-group error">
        <input type="text" name="inputName" placeholder="Name" value="{{ username }}"
               class="text-error" required>
        <span class="help-block text-error">User already exists</span>
    </div>
{% endif %}

调试器说username_is_ok == True等于{bool} True。但它转到else分支,当页面加载时,我看到错误消息。我看不到任何错误,我对此感到沮丧。你能帮助我吗?谢谢。

4

1 回答 1

4

Django 模板语言不是 Python,而是它自己的具有最少逻辑的自定义“模板语言”(这是设计使然:鼓励您将“控制器”逻辑远离模板)。因此,您会发现一些有效的 Python 可能不是有效的模板语法

在您的示例中,模板语言尝试将“True”评估为文字。由于您可能没有在上下文中定义名为“True”的键,因此VariableDoesNotExist会引发异常,并且模板会将值视为 pythonNone类型。

调试器将条件评估为 Python,而不是 Django 模板语言,因此该值针对 Python 进行测试True并评估为True

为了使逻辑起作用,您可能想尝试添加True到您的模板上下文中。就像是:{"True": True}

相关:https ://stackoverflow.com/a/5672415/927229

于 2013-05-08T02:43:26.353 回答