2009-04-24 174 views
9

從技術上講,它應該從0迭代到輸出c [i] [0] .from_user的用戶名的rangeLength,但是從在線查看示例,他們似乎用括號替換括號點符號。我有以下代碼:Python Django模板:迭代遍歷列表

<div id="right_pod"> 
{%for i in rangeLength%} 
    <div class="user_pod" > 
     {{c.i.0.from_user}} 
    </div> 
{% endfor %} 

目前這沒什麼輸出:(如果我取代 「我」 與0 ... {{c.0.0.from_user}} ...這將輸出的東西..(第一用戶的10倍)

+1

請提供`c`的結構。否則這很難解釋。 – 2009-04-24 10:05:28

回答

16

你需要i是一個指數如果不是,看看下面的代碼做你以後:

<div id="right_pod"> 
{% for i in c %} 
    <div class="user_pod"> 
     {{ i.0.from_user }} 
    </div> 
{% endfor %} 
+0

理想情況下,我需要我是一個索引,所以我可以限制循環的用戶數量。在將c傳遞給模板之前,我應該在控制器中執行此操作嗎? – TimLeung 2009-04-24 00:55:58

8

您應該使用切片模板過濾來實現你想要什麼:

遍歷對象(在這種情況下C),像這樣:

{% for c in objects|slice:":30" %} 

這將確保你只在第一30名對象進行迭代。

此外,您可以使用forloop.counter對象來跟蹤您所在的循環迭代。

13

請閱讀整個documentation on the template language's for loops。首先,這個迭代(就像在Python中)是在對象之上,而不是在索引之上。其次,在任何for循環中,都有一個forloop變量,其中包含兩個您感興趣的字段:

Variable   Description 
forloop.counter  The current iteration of the loop (1-indexed) 
forloop.counter0 The current iteration of the loop (0-indexed)