2012-12-10 164 views
1

我對Django或Python沒有太多瞭解,但我知道在模板中使用簡單的for循環會產生問題。在Django模板中控制for循環

我想做下面的事,想知道我的選擇是 - 有一種簡單的方法可以在模板中做到這一點?

{% for image in my_images %} //only loop through 1-10 

然後:

{% for image in my_images %} //only loop through 10-20 

感謝,

回答

3

如果my_images是一個列表,您正在尋找the slice filter

{{ some_list|slice:":2" }} 

如果some_list是['a', 'b', 'c'],輸出將是['a', 'b']

當然,在優化說明中,通常不會獲取比您需要的更多的記錄,因此在視圖級別執行此操作通常會更好。

+0

對於子集,{{some_list | slice:「2:6」}}}。 Wierd沒關係,但是對於循環不是。謝謝很多! – rix

0

如果你需要的所有數據,但要在塊來顯示它,您可以分割您的名單像這樣

def Chunks(l, n): 
    return [l[i:i+n] for i in range(0, len(l), n)] 

其中n =任意數量的,在你的情況下,將10

然後,您只需循環模板中的分塊列表即可。

+0

這是一個非常醜陋的方式,請檢查['itertools'' grouper()'配方](http://docs.python.org/3/library/itertools.html#itertools-recipes),它適用於任意的iterables ,而不僅僅是列表,並且不通過索引進行循環。 –

+0

謝謝你一定會看看那些。 –