Django. "Словарь изменил размер во время итерации", при этом ничего не изменив
Мне кажется, что я схожу с ума. Я пытаюсь выполнить итерацию по словарю, содержащему списки.
Вот мой код: (Да, я знаю, что этого недостаточно для достижения того, что я пытаюсь сделать, но я сократил код до минимума, при этом проблема осталась):
{% for wc in response %}
<tr>
<td>{{ response.wc }}</td>
</tr>
{% endfor %}
Но я получаю эту ошибку "словарь изменил размер во время итерации"
Как может понять любой человек с половиной мозга, я не собираюсь менять НИЧЕГО в дикте списков.
Я думаю о хакерском решении, просто передать другой список ключей в шаблон, который я могу использовать для итерации по списку, например: {%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
.