我的for循环没有得到值

2024-07-05 14:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我所拥有的:

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 %}

Tags: nameusernameresultitemjohnh1peterfirst
3条回答

结果是一本字典。用for x in mydict遍历字典只给出键,而不是值。所以你需要做{% for item, value in mydict.items %}。你知道吗

其次,{{ result.item.username }}毫无意义。itemresultdict中键的值,但不能在Django模板中进行这种间接查找。不过,幸运的是,我们在value变量中有这个值。你知道吗

第三,正如Kabie指出的,每个value实际上是一个元素列表。因此,您需要访问该列表中的第一项,然后访问该列表的username成员。你知道吗

综合起来:

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

我认为这句话:

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

应该是:

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

您正在使用print在for循环中获取输出。首先将对象转换为字符串。显然,本例中的对象是某种xml/html对象。你知道吗

从Django模板内部,您不能打印。您可以尝试通过str()调用将对象转换为字符串,但总的来说,我感觉您正在尝试让模板做一些您不应该让模板做的事情。你知道吗

尝试在model对象上有一个返回所需字符串的方法,并将其插入模板中。你知道吗

相关问题 更多 >