【问题标题】:Looping through nested dictionary in Django template循环遍历 Django 模板中的嵌套字典
【发布时间】:2020-08-03 00:12:49
【问题描述】:

我的 Django 模板的上下文字典类似于以下内容:

{'key1':'1',
'key2':'2',
'key3':'3',
'key4':{'key5':{'key6':'6', 'key7':'7', 'key8':'8'}}}

我想遍历字典并打印如下内容:

一些标签 = 6
一些标签 = 7
一些标签 = 8

如何在我的 Django 模板中实现这一点?

【问题讨论】:

    标签: python django loops dictionary django-templates


    【解决方案1】:

    我猜您想在 django 模板中使用 for 循环来执行此操作,您必须首先将字典传递给视图文件中的模板,因此请确保在字典周围添加方括号,如下所示:

     data = [{'key1':'1',
            'key2':'2',
            'key3':'3',
            'key4':{'key5':{'key6':'6', 'key7':'7', 'key8':'8'}}
            }]
    return render(request,'name of template',{'data':data})
    

    然后在html模板中:

    {% for i in data%}
    <p>{{i.key1}}</p>
    <p>{{i.key2}}</p>
    <p>{{i.key3}}</p>
    <p>{{i.key4.key5.key6}}</p>
    {% endfor %}
    

    现在,当您执行 for 循环时,您可以访问 key4 中的所有 itams,就像我在上面输入 {{i.key4.key5.key6}} 时一样 这是 django 模板中 for 循环的文档https://docs.djangoproject.com/en/3.0/ref/templates/builtins/

    我假设这就是你想要做的。

    【讨论】:

    • 不完全 - 我已将字典传递给我的模板,但我想访问嵌套在主上下文字典中的键 6、7 和 8,并打印它们的值
    • 做了一些编辑,你能告诉我,如果我的作品在我身上试过,它确实有效
    【解决方案2】:

    如果您只想打印您提到的问题,那么这是可能的,但如果我们不知道字典的确切结构,那么可能在 django 视图中而不是在 django 模板中。

    您不能在 django 模板中一个接一个打印值,它也是一个字典, 但是您可以在 django 视图中执行此操作。

    查看此帖子click here 并对视图进行一些更改。

    【讨论】:

      【解决方案3】:

      这对我有用:

      {% for key, value in context.items %}
      {% ifequal key "key4" %}
      {% for k, v in value.items %}
         some label = {{ v.key6 }}
         some label = {{ v.key7 }}
         some label = {{ v.key8 }}
      {% endfor %}
      {% endif %}
      {% endfor %}
      

      【讨论】:

        【解决方案4】:

        这是怎么回事?

        <ul>
          {% for key, value in key4.key5.items %}
          <li>{{ key }} : {{ value }}</li>
           {% endfor %}
        </ul>
        

        注意:您没有要求遍历上下文中的所有键,只是访问key4['key5'] 内容。如果这不是您所要求的,请编辑您的问题以使其更清楚;-)

        【讨论】:

          猜你喜欢
          • 2022-08-17
          • 2021-01-18
          • 1970-01-01
          • 2021-12-20
          • 2011-10-11
          • 2016-08-31
          • 2013-09-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多