Django过滤器:动态切片

时间:2014-06-16 12:46:18

标签: django

我正在引用此切片过滤器:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#slice

如果我有这个列表a=[1, 2, 3, 4, 5],有没有办法取这个列表的前半部分? 类似于{{ a|slice:":3" }}

但是我想要列出3的大小而不是a。并且a可以包含偶数或奇数个元素。而且我不想将列表长度作为变量传递给视图中的上下文

稍后编辑

我想知道是否有其他解决方案,而不是自定义过滤器

2 个答案:

答案 0 :(得分:2)

如果在for循环中使用,则可以执行以下操作:

{% for item in a %}
  {% if forloop.counter < forloop.revcounter %}
    {# first half of list #}
  {% else %}
    {# second half of list #}
  {% endif %}
{% endfor %}

答案 1 :(得分:0)

您可以为此目的进行自定义过滤:

@register.filter("half_slice")
def half_slice_filter(value):
    return value[:len(value)/2]