遍历Django模板中的嵌套字典



Django模板的上下文字典如下所示:

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

我想反复阅读字典并打印如下内容:

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

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

这有什么问题?

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

注意:您并没有要求对上下文中的所有键进行循环,只是要求访问key4['key5']内容。如果这不是你想要的,请把你的问题写下来,让它更清楚;-(

我猜你想在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中的所有iteams,就像我在上面放{{i.key4.key5.key6}}时一样以下是django模板中for循环的文档https://docs.djangoproject.com/en/3.0/ref/templates/builtins/

我想这就是你想做的。

这对我很有效:

{% 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 %}

如果你只想打印你提到的内容,那么这是可能的,但如果我们不知道字典的确切结构,那么这在django视图中是可能的。

您不能在django模板中逐个打印也是字典的值,但你可以在django视图中这样做。

检查这篇文章点击这里并在视图中做一些更改。

最新更新