我的for循环没有得到值
问题描述:
这是我有:我的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 %}
答
您正在使用print
在for循环中获取输出。这首先将对象转换为一个字符串。显然,这种情况下的对象是某种xml/html对象。
从Django模板中,您不打印。您可以尝试通过str()
调用将对象转换为字符串,但通常情况下,我有这样的感觉,即您正尝试使模板执行一些您不应该首先创建模板的操作。
尝试在模型对象上有一个返回所需字符串的方法,然后将其插入到模板中。
答
我觉得行:
<p> {{ result.item.username }} </p>
应该是:
<p> {{ result.item.0.username }} </p>
答
结果是一本字典。使用for x in mydict
对字典进行迭代只是给出了键,而不是值。所以你需要做{% for item, value in mydict.items %}
。
其次,{{ result.item.username }}
根本没有意义。 item
是result
字典中的一个键的值,但是您不能在Django模板中进行这种间接查找。但是,幸运的是,我们有value
变量中的值。第三,正如Kabie指出的那样,每个value
实际上都是一个单元素列表。因此,您需要访问该列表中的第一个项目,然后才能访问该项目中的第一个项目。
全部放在一起:
{% for item, value in result.items %}
<h1> {{ item }} </h1>
<p> {{ value.0.username }} </p>
{% endfor %}
你能告诉我们你要使用你的for循环的代码? – GWW 2011-01-19 20:27:29