循环遍历 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 模板中的嵌套字典的主要内容,如果未能解决你的问题,请参考以下文章

如何遍历 django 模板中的嵌套字典

Django模板不显示循环键、值

如何遍历 Django 模板中的字典?

Django模板访问嵌套数据

显示 % forloop% 的键和值的 Django 模板:如何遍历模板中的字典?

python3循环遍历嵌套字典替换指定值