2013-05-30 155 views
0

turl1turl2 ... ourl1ourl2是我從視圖返回的上下文變量(所有字符串)。Django模板:爲什麼變量名稱評估爲字符串

{% for i in "1234" %} 
    <div class="spot"> 
     {% with t="turl"|add:i %} 
     {% with o="ourl"|add:i %} 
      <a href= {{ o }}"> 
       <img src={{ t }}> 
      </a> 
     {% endwith %} 
     {% endwith %} 
    </div> 
    {% endfor %} 

現在我得到這樣的:

<a href="ourl1"> 
    <img src="turl1"> 
</a> 
... 

ourl1turl1應該評估到URL,但事實並非如此。

回答

1

您應該刪除引號行:

{% with t=turl1 %} 
{% with o=ourl1 %} 

如果你想遍歷它,你應該從你的視圖中的兩個數組傳遞。

{'urls': [[turl1, ourl1], [turl2, ourl2]]} 

然後迭代它在你的模板:

{% for t, o in urls %} 
    <a href="{{ o }}"> 
     <img src="{{ t }}"/> 
    </a> 
{% endfor %} 
+0

我需要一個循環模板否則Django的模板會有很多重複的代碼。所以不能只是硬編碼turl1,turl2,turl3 ...後面的數字必須作爲循環索引添加我認爲 – Philip007

+0

正如我在答案中所說的,傳遞一個數組。 – Yossi

+0

你是從什麼時候開始討論陣列事物的?看不到它。無論如何,你可以發佈代碼示例嗎? – Philip007

0

如果turl1, turl2...ourl1, ourl2是上下文變量,然後在你需要把它們之間{ ... }