2

我的 html 文件中有以下内容:

{% trans "Result: "%} {{result}} 

这将在浏览器上打印出 SUCCESS 一词(因为这就是字符串包含的内容)

但如果我执行以下操作:

{% if result == 'SUCCESS' %}
   do something
{% else %} 
   do something else
{% endif %}

我发现 if 语句没有按预期工作。

为什么是这样??

4

2 回答 2

3

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

于 2013-02-21T18:35:09.773 回答
2

检查此链接: 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 %}

这个问题是由于您的变量类型而发生的,您应该在将其与另一个字符串进行比较之前将其更改为字符串。

于 2019-05-26T01:46:38.403 回答