我的html文件中有以下内容:
{% trans "Result: "%} {{result}}
将在浏览器上打印出SUCCESS一词(因为这就是字符串包含的内容)
但如果我这样做:
{% if result == 'SUCCESS' %}
do something
{% else %}
do something else
{% endif %}
我发现if语句没有按预期工作。
为什么这???
答案 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 %}
此问题是由于您的变量类型而引起的,应将其更改为字符串,然后再将其与另一个字符串进行比较。