循环遍历 Django 模板中的嵌套字典
Posted
技术标签:
【中文标题】循环遍历 Django 模板中的嵌套字典【英文标题】:Looping through nested dictionary in Django template 【发布时间】: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 模板中实现这一点?
【问题讨论】:
【参考方案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']
内容。如果这不是您所要求的,请编辑您的问题以使其更清楚;-)
【讨论】:
以上是关于循环遍历 Django 模板中的嵌套字典的主要内容,如果未能解决你的问题,请参考以下文章