我想我快要疯了。 我正在尝试迭代包含列表的字典。
这是我的代码:(是的,我知道这不足以完成我想做的事情,但我已将代码削减到最少,但仍然导致问题):
{% for wc in response %}
<tr>
<td>{{ response.wc }}</td>
</tr>
{% endfor %}
但是我收到此错误“字典在迭代期间更改了大小”
任何有半个大脑的人都可以看到,我基本上不会改变列表字典中的任何内容。
我正在考虑一个 hacky 解决方案,只需将另一个键列表传递给模板,我可以使用它来迭代该列表,例如:{%for key in keys%} response.key。 这似乎是错误的做法。
{% for wc in response %}
<tr>
<td>{{ response.wc }}</td>
</tr>
{% endfor %}
似乎不正确。
使用方法如下。
{% for wc in response %}
<tr>
<td>{{ wc }}</td>
</tr>
{% endfor %}
wc
是for循环的当前值。你应该使用它。
您可以访问此 wc
对象的属性,例如 wc.attribute_name
。
这不是循环变量的方式。你应该这样做:
{% for wc in response %}
{{ wc }}
{% endfor %}
通过执行
{{ response.wc }}
,Django 将尝试做三件事:查找 response["wc"]
、调用 response.wc()
和列表查找 response[wc]
,其中 wc
是索引。根据您背后的代码,它可能会更改 response
对象。