0

我在 Django 模板中有一个条件,如果表达式的计算结果为 true,它将创建某种颜色的文本,如果不是,则创建另一种颜色。请注意,我实际上不会像本示例中那样在 HTML 中包含我的样式,但是这样可以更容易地给出示例。这是代码:

    <div class="span6 resultsBox">
        <h2>Items:  
            {% if user.items >= user.itemsQuota %}
            <span id="items" style="color:green">{{ user.items}} </span>
            {% else %}
            <span id="items" style="color:white">{{ user.items }} </span>
            {% endif %} 
            / {{user.itemsQuota }}.
        </h2><br />
    </div>

无论我做什么,生成的span文本都是绿色的!通常我会认为我的模型以及它们如何计算相等性有问题,但是即使输出类似于100/1000,显然{{ user.items }}小于{{ user.itemsQuota }},也会出现绿色字体!我的条件句在这里缺少什么?

4

1 回答 1

3

我的猜测user.items是一个字符串并且user.itemsQuota是一个数字。在 Python(3.x 之前)中,'100' > 1000为 True。

快速演示:

from django.template import Template, Context
from django.conf import settings

settings.configure()

t = Template('{% if a > b %} a > b {% else %} a <= b {% endif %}')
print t.render(Context({ 'a' : '100', 'b' : 1000 }))
print t.render(Context({ 'a' : 100  , 'b' : 1000 }))

印刷:

a > b 
a <= b 

如果您想要仅模板的解决方案,则可以使用:

t = Template('{% if a|add:"0" > b|add:"0" %} a > b {% else %} a <= b {% endif %}')

(因为add将值强制为整数)

于 2013-03-26T13:47:39.340 回答