Мне было интересно, почему итерация по словарю с использованием .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 %}
Вернуться на верх