2011-01-19 82 views
0

這是我有:我的for循環沒有得到值

result = defaultdict(<type 'list'>, 
{'USA': [{'username': 'user123', 'first-name': 'John', 'last-name': 'Doe'}], 
'Europe': [{'username': 'myname654', 'first-name': 'Peter', 'last-name': 'Johnson'}] 
}) 

這是我想

<html> 
    <body> 
    <h1> USA </h1> 
    <p> user123, John Doe</p> 

    <h1> Europe </h1> 
    <p> myname654, Peter Johnson</p> 
    </body> 
</html> 

我已經嘗試噸不同的for循環輸出,但沒有他們工作。

這是我有,但它不起作用。

{% for item in result %} 
<h1> {{ item }} </h1> 
<p> {{ result.item.username }} </p> 
{% endfor %} 
+0

你能告訴我們你要使用你的for循環的代碼? – GWW 2011-01-19 20:27:29

回答

0

您正在使用print在for循環中獲取輸出。這首先將對象轉換爲一個字符串。顯然,這種情況下的對象是某種xml/html對象。

從Django模板中,您不打印。您可以嘗試通過str()調用將對象轉換爲字符串,但通常情況下,我有這樣的感覺,即您正嘗試使模板執行一些您不應該首先創建模板的操作。

嘗試在模型對象上有一個返回所需字符串的方法,然後將其插入到模板中。

0

我覺得行:

<p> {{ result.item.username }} </p> 

應該是:

<p> {{ result.item.0.username }} </p> 
1

結果是一本字典。使用for x in mydict對字典進行迭代只是給出了鍵,而不是值。所以你需要做{% for item, value in mydict.items %}

其次,{{ result.item.username }}根本沒有意義。 itemresult字典中的一個鍵的值,但是您不能在Django模板中進行這種間接查找。但是,幸運的是,我們有value變量中的值。第三,正如Kabie指出的那樣,每個value實際上都是一個單元素列表。因此,您需要訪問該列表中的第一個項目,然後才能訪問該項目中的第一個項目。

全部放在一起:

{% for item, value in result.items %} 
<h1> {{ item }} </h1> 
<p> {{ value.0.username }} </p> 
{% endfor %}