Мне было интересно, почему итерация по словарю с использованием .keys в django не работает?
Я знаю, что .items будет полезен для захвата значения, но хотел узнать, почему это не сработает?
Данные:
...
city_data = {
'city': json_data['name'],
'country': json_data['sys']['country'],
'temp': json_data['main']['temp'],
'feels_like': json_data['main']['feels_like'],
'temp_max': json_data['main']['temp_max'],
'temp_min': json_data['main']['temp_min']
}
return render(request, ..., context={'city_data':city_data})
template:
...
{% for key in city_data.keys %}
<li>{{city_data.key}}</li>
{% endfor %}
...
Я думаю, что причина того, что это не работает таким образом, заключается в том, что django будет смотреть на test.key
и пытаться найти строку "key" как фактический ключ к словарю. Есть несколько способов сделать это. Один из способов - определить пользовательский фильтр шаблона, который позволит вам это сделать. Я не очень хорошо разбираюсь в пользовательских фильтрах, поэтому не могу сказать, как именно это сделать. Другой способ - использовать city_data.items
в вашем шаблоне, например, так:
{% for key,value in city_data.items %}
<li>{{ value }}</li>
{% endfor %}