姜戈。 “字典在迭代过程中改变了大小”,但没有改变任何东西

问题描述 投票:0回答:2

我想我快要疯了。 我正在尝试迭代包含列表的字典。

这是我的代码:(是的,我知道这不足以完成我想做的事情,但我已将代码削减到最少,但仍然导致问题):

{% for wc in response %}
    <tr>
        <td>{{ response.wc }}</td>
    </tr>
{% endfor %}

但是我收到此错误“字典在迭代期间更改了大小”

任何有半个大脑的人都可以看到,我基本上不会改变列表字典中的任何内容。

我正在考虑一个 hacky 解决方案,只需将另一个键列表传递给模板,我可以使用它来迭代该列表,例如:{%for key in keys%} response.key。 这似乎是错误的做法。

django django-templates
2个回答
0
投票
{% 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


0
投票

这不是循环变量的方式。你应该这样做:

{% for wc in response %}
 {{ wc }}
{% endfor %}

通过执行

{{ response.wc }}
,Django 将尝试做三件事:查找
response["wc"]
、调用
response.wc()
和列表查找
response[wc]
,其中
wc
是索引。根据您背后的代码,它可能会更改
response
对象。

© www.soinside.com 2019 - 2024. All rights reserved.