我知道如何做一個forloop從列表中獲取對象,但在這裏我正在討論一個forloop以重複某些次數。就像在PHP中,我會這樣做:如何在Django模板中做一個forloop?
for (i=0; i < 10; i++) {
hello <br />
}
這將輸出hello 10次。那麼如何在django模板語言中做到這一點?
我知道如何做一個forloop從列表中獲取對象,但在這裏我正在討論一個forloop以重複某些次數。就像在PHP中,我會這樣做:如何在Django模板中做一個forloop?
for (i=0; i < 10; i++) {
hello <br />
}
這將輸出hello 10次。那麼如何在django模板語言中做到這一點?
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)
然後:
你可以使用一個custom filter要做到這一點很容易
{% for i in 10|range %}
hello <br/>
{% endfor %}
這可以通過實現自己的模板標籤重複某些模塊來實現。看看官方文檔在 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
這樣,你可以通過編寫使用它:
{% repeat 3 %}
<div>html to repeat</div>
{% endrepeat %}
這是從2009年的舊片段它可以完成上述,它可能需要更新與Django的工作1.3雖然,但應該足以讓你開始: http://djangosnippets.org/snippets/1499/
+1爲了避免使用「RTFM」,同時促進自我教學。 – nearlymonolith 2011-06-02 21:30:10
我知道那種for循環。就像我說過的,我可以使用forloops列出對象列表中的對象。我一直在尋找的是一個通用的循環來重複某些靜態內容一定次數。 – Tyler 2011-06-02 21:50:19
我已經用可能有幫助的代碼片段更新了我的答案。如果有的話,請明智地使用它。 – jMyles 2011-06-02 22:08:50