检查Django模板中数组中的元素数

时间:2009-11-09 12:51:43

标签: django

我想看看我的Django模板中数组中元素的数量是否大于1.我可以使用以下语法吗?

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

谢谢

5 个答案:

答案 0 :(得分:67)

从Django 1.2开始; if 支持布尔操作和过滤器,因此您可以将其写为:

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

有关带过滤器的if,请参阅Django项目documentation

答案 1 :(得分:6)

没有。但您可以使用django-annoying{% if myarr|length > 1 %}也能正常使用。

答案 2 :(得分: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

答案 3 :(得分:2)

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

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

  2. 安装模板标记的附加库,可以让您进行更丰富的比较,例如:http://www.djangosnippets.org/snippets/1350/

  3. 如果您认为自己经常遇到模板语言限制,请完全使用不同的模板语言。

答案 4 :(得分:0)

也许this会有任何帮助吗?

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