我的 html 文件中有以下内容:
{% trans "Result: "%} {{result}}
这将在浏览器上打印出 SUCCESS 一词(因为这就是字符串包含的内容)
但如果我执行以下操作:
{% if result == 'SUCCESS' %}
do something
{% else %}
do something else
{% endif %}
我发现 if 语句没有按预期工作。
为什么是这样??
该if
声明工作正常。您的问题必须与字符串有关。也许它根本不是一个字符串。
尝试ifequal
模板标签:
{% ifequal result 'SUCCESS' %}
do something
{% else %}
do something else
{% endifequal %}
你可以尝试不同的东西。如果您在视图中分配result
,您可以在同一个视图中验证它是一个字符串:
def my_view(request):
# ... processing ...
result = something()
# Let's make sure it's a string containing 'SUCCESS'
assert type(result) == str
assert result == 'SUCCESS'
如果它是上下文处理器,您可以应用相同的逻辑。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#ifequal
检查此链接: Django 字符串格式。根据 django 文档,您应该使用这种格式:
{% if result|stringformat:"s" == 'SUCCESS' %}
do something
{% else %}
do something else
{% endif %}
或者
{% if result|stringformat:"s" in 'SUCCESS' %}
do something
{% else %}
do something else
{% endif %}
或者
{% ifequal result|stringformat:"s" 'SUCCESS' %}
do something
{% else %}
do something else
{% endif %}
这个问题是由于您的变量类型而发生的,您应该在将其与另一个字符串进行比较之前将其更改为字符串。