Django if语句不能按预期工作

时间:2013-02-21 18:31:21

标签: python django

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

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

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

但如果我这样做:

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

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

为什么这???

2 个答案:

答案 0 :(得分:3)

if语句可以正常工作。你的问题必须是关于字符串。也许它根本不是一个字符串。

试试ifequal templatetag:

{% 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

答案 1 :(得分:1)

检查此链接: Django String format。 根据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 %}

此问题是由于您的变量类型而引起的,应将其更改为字符串,然后再将其与另一个字符串进行比较。