我有这段代码:
{% 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
分支,当页面加载时,我看到错误消息。我看不出错误,我对此感到沮丧。你能帮助我吗?感谢。
答案 0 :(得分:3)
Django模板语言不是Python,而是它自己的自定义“模板语言”,逻辑极小(这是设计:鼓励你让“控制器”逻辑远离模板)。因此,您会发现某些有效的Python可能不是有效的模板语法
在您的示例中,模板语言尝试将“True”评估为文字。由于您可能未在上下文中定义名为“True”的键,因此会引发VariableDoesNotExist
异常,并且模板将该值视为python None
类型。
调试器将条件评估为Python,而不是Django模板语言,因此该值针对Python True
进行测试并评估为True
为了使逻辑起作用,您可能希望尝试将True
添加到模板上下文中。类似于:{"True": True}