Шаблон Django: доступ к внутреннему словарю

Вопрос шаблона новичка django, надеюсь получить некоторые указатели.

Я возвращаю словарь для рендеринга в html для страницы. Структура словаря примерно следующая:

dic:{
    "names":["name1", "name2", "name3"],
    "names1":{
          "addresses":["address1","address2","address3"],   
          "key2":[......]
          ......
          }
    "name2":{......}
    }

Как получить доступ к внутренним словарям? Единственный способ узнать ключи для этих внутренних словарей - из списка, но мне не удалось перебрать значения, указанные ключевыми «именами», и использовать это значение в качестве ключа для получения другого словаря. Я изучил создание фильтров/тегов клиентов, но не уверен, как действовать дальше.


person totoromeow    schedule 20.11.2013    source источник


Ответы (1)


Используйте items из документов django:

{% for key, value in data.items %}
    {{ key }}: {{ value }}
{% endfor %}

Я проверил это на вашем примере:

В шаблоне:

<ul>
  {% for l1_key, l1_value in dic.items %}
  <li>{{ l1_key }}:
    <ul>
      {% for l2_key, l2_value in l1_value.items %}
      <li>{{ l2_key }}: {{ l2_value }}</li>
      {% empty %}
      <li>{{ l1_value }}</li>
      {% endfor %}
    </ul>
  </li>
  {% endfor %}
</ul>

Это выведет что-то вроде:

- name2:
    - address: [1, 2, 3]
- names:
    - ['name1', 'name2', 'name3']
- names1:
    - key2: [1, 2]
    - addresses: ['address1', 'address2', 'address3']

элементы возвращают список кортежей, образованных (ключ, значение)

Я использовал этот диск (исправьте мелкие проблемы в вашем примере):

dic = {
    "names":["name1", "name2", "name3"],
    "names1":{
        "addresses":["address1","address2","address3"],
        "key2":[1,2]
    },
    "name2":{'address':[1,2,3]}
}
person juliocesar    schedule 20.11.2013