【问题标题】:Django template: access inner dictionaryDjango模板:访问内部字典
【发布时间】:2013-12-03 22:02:13
【问题描述】:

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

我正在传回一个字典以呈现为页面的 html。字典的结构如下:

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

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

【问题讨论】:

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


    【解决方案1】:

    使用items,来自django docs

    {% 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']
    

    items 返回由 (key, value) 组成的元组列表

    我使用了这个 dic(修复了您示例中的小问题):

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

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 2021-10-17
      • 1970-01-01
      • 2014-02-08
      • 2019-09-01
      • 2014-02-01
      • 2016-02-29
      相关资源
      最近更新 更多