2014-06-16 39 views
0

我指的這片過濾器:https://docs.djangoproject.com/en/dev/ref/templates/builtins/#sliceDjango的過濾器:動態限幅

,如果我有這個名單a=[1, 2, 3, 4, 5],有沒有什麼辦法把這個列表的前半部分? 類似{{ a|slice:":3" }}。我想要a的大小。並且a可以具有偶數或奇數個元素。我不想從視圖傳遞列表的長度作爲一個變量在上下文

以後編輯

我想知道是否有另一種解決方案,除了自定義過濾器

回答

0

您可以爲此做自定義過濾器:

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

哦,是的,忘了提。我已經做了一個自定義過濾器。如果可能的話,我對另一種解決方案感興趣。我想同時列出上半部分和下半部分。 –

2

如果在一個for循環使用,你可以這樣做:

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

聰明的舉動......但是,我認爲目前使用自定義過濾器更加優雅 –