2011-06-02 20 views
0

我知道如何做一個forloop從列表中獲取對象,但在這裏我正在討論一個forloop以重複某些次數。就像在PHP中,我會這樣做:如何在Django模板中做一個forloop?

for (i=0; i < 10; i++) { 

    hello <br /> 

} 

這將輸出hello 10次。那麼如何在django模板語言中做到這一點?

回答

10

Django模板語言有For循環。請參閱:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

....你可能會注意到,有在那種沒有明確打出「重複」功能,你之後。例如,你可以在你的視圖中定義一個int(在你的情況下),並將其範圍傳遞給模板上下文,然後迭代該int的範圍(當然,在Python中,int對象本身不可迭代) 。

但是,更「pythonic」的方法是明確的:問問自己,「爲什麼我要迭代十次?」這個頁面上展示的椰子數量是否與攜帶它們的勇敢的燕子有關?如果是這樣,不要遍歷數字10--而是直接遍歷椰子對象列表,然後在forloop中執行演示邏輯。

{% for coconut in coconuts %} 
    hello, {{forloop.counter}} {# Something useful about the coconut goes here. #} 
{% endfor %} 

假設有10個椰子,這將產生與你的例子相同的結果。但是,正如我在我的評論中指出的那樣,一旦進入循環,您肯定可以對椰子物體做更有用的事情。

如果你真的,絕對認爲你通過一個靜態的範圍,而在它傳到你的業務邏輯需要循環,你會發現這個片斷非常有用:

http://djangosnippets.org/snippets/1899/

同樣,我會謹慎你要確保你正在做你真正想做的事情,而不僅僅是鞏固知識管理中的更深層次的內容。在你的模板

from django.template import Library 
register = Library() 

@register.filter 
def range(value): 
    return xrange(value) 

然後:

+3

+1爲了避免使用「RTFM」,同時促進自我教學。 – nearlymonolith 2011-06-02 21:30:10

+0

我知道那種for循環。就像我說過的,我可以使用forloops列出對象列表中的對象。我一直在尋找的是一個通用的循環來重複某些靜態內容一定次數。 – Tyler 2011-06-02 21:50:19

+0

我已經用可能有幫助的代碼片段更新了我的答案。如果有的話,請明智地使用它。 – jMyles 2011-06-02 22:08:50

2

你可以使用一個custom filter要做到這一點很容易

{% for i in 10|range %} 
    hello <br/> 
{% endfor %} 
相關問題