2009-11-09 29 views

回答

2

这是这些权力Django模板语言不给你的一个。您有几种选择:

  1. 计算这个在您的视图值,并将其传递到模板中的一个新的变量。

  2. 安装模板标签的附加库,让你得到更丰富的比较,例如:http://www.djangosnippets.org/snippets/1350/

  3. 使用不同的模板语言完全,如果你认为你会经常运行到模板语言的局限性。

4

很伤心,但是在django的'if'标签中没有这样的功能。有一个rumors that smarter if tag will be added in 1.2.,至少它在High priority列表中。

或者您可以使用"smart_if" tag from djangosnippets.com

或者您也可以添加自己的过滤器(同样喜欢length_is过滤器) - 但它只是增加了更多无用的代码:(

from django import template 
register = template.Library() 

def length_gt(value, arg): 
    """Returns a boolean of whether the value is greater than an argument.""" 
    try: 
     return len(value) > int(arg) 
    except (ValueError, TypeError): 
     return '' 
length_gt.is_safe = False 
register.filter(length_gt) 

欲了解更多信息请咨询django docs

0

也许this会有帮助吗?

检查Django中的集合大小模板是有限的。我使用的唯一解决方案是将另一个参数从视图传递到模板 - 但说实话,如果取决于您尝试实现的内容。

56

从Django 1.2开始; 如果,支持布尔运算和过滤器,这样你就可以写为:

{% if myarr|length > 1 %} 
<!-- printing some html here --> 
{% endif %} 

因为如果有过滤器查看Django项目documentation

+0

有一件奇怪的事情:在1.6中,如果你使用'myarr |长度',django会打印它,但如果你尝试比较,你会得到一个错误。为了比较,我不得不删除空格。 – aldux 2014-10-01 21:09:57