Django模板中if-else语句的错误工作

时间:2013-05-08 02:16:23

标签: python django django-templates

我有这段代码:

{% 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分支,当页面加载时,我看到错误消息。我看不出错误,我对此感到沮丧。你能帮助我吗?感谢。

1 个答案:

答案 0 :(得分:3)

Django模板语言不是Python,而是它自己的自定义“模板语言”,逻辑极小(这是设计:鼓励你让“控制器”逻辑远离模板)。因此,您会发现某些有效的Python可能不是有效的模板语法

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

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

为了使逻辑起作用,您可能希望尝试将True添加到模板上下文中。类似于:{"True": True}

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