Django模板:访问内部字典

时间:2013-11-20 03:53:50

标签: django django-templates django-template-filters

一个新手django模板问题,希望得到一些指示。

我正在传回一个字典来渲染到页面的html。字典的结构如下:

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

如何访问内部词典?知道这些内部词典的键的唯一方法是从列表中,但我无法遍历键“names”指向的值,并使用该值作为获取另一个词典的键。我已经考虑过编写客户过滤器/标签但不确定如何继续。

1 个答案:

答案 0 :(得分:1)

使用django docs中的items

{% 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(修复了你的例子中的小问题):

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