2012-12-06 84 views
-5

這是我在堆棧溢出的第一篇文章。我有這個循環,它在Python本身中工作得很好。如何在Django模板中使用此循環?

for i, j in enumerate(ls.split("/")): 
    print i * " " + j 

我想在Django模板中實現同樣的事情。這是我以爲我會這樣做:

{% for i, j in enumerate(ls.split("/")) %} 
{% i * " " + j %} 
{% end for %} 

但這不起作用。我得到LS變量從views.py。變量在執行for循環時組成。由於

+0

爲什麼負標記? – user1881957

+0

關於stackoverflow的問題應該對其他人有價值。因此,你應該在詢問之前做一些研究並提出一個真正的問題。你的問題表明你沒有真正閱讀Django的模板文檔。沒有一個例子是這樣的。強調你不能在這些文檔的模板中進行計算。 –

回答

4

你似乎沒有讀過任何有關Django模板的文檔。在提問前你應該這樣做。

Django的模板語言是故意限制。它不是Python。你不能在其中進行任意的函數調用。這種事情必須在視圖中完成,或者可能在自定義模板標籤中完成。

+0

可以在視圖中做。但是不可能將for循環的結果存儲在變量中,然後在模板中調用,是嗎?原來這是我唯一的選擇。 – user1881957

+0

我不理解評論。當然,可以在視圖中執行循環,將結果存儲在列表中,並將其傳遞到模板中進行迭代。或者,您可能只想在視圖中進行拆分,然後在模板中使用'forloop.counter'遍歷多少個空格。 *或者*,你可能會認爲多個空格在HTML中摺疊成一個空格,所以使用嵌套'ul' /'li'標籤格式化你的項目。 –

+0

好的。我已經完成了列表理解將結果存儲在一個變量中。我現在在模板中卡住了格式。 – user1881957

1

我想應該是這樣的:

{% for i, j in data_supplied_to_template %} 
    {{ i * " " + j }} 
{% endfor %} 

通知的endfor關鍵字和模板替換雙括號語法。

現在,你必須把你需要將你交給模板引擎渲染data_supplied_to_template變量的數據。

一些其他建議包括使用更好的nanes您的變量(I,J,通常保留給整數和索引)

更多信息,請參見template documentation

+0

這是不正確的!不起作用。 – user1881957

+1

@ user1881957:你說得對。你的代碼有幾個問題,我想告訴你模板語法的必要修改。請注意我的編輯,並研究Django項目中的示例和文檔。一旦掌握了這個概念,實際上很容易。 – Ber