字典值不能通过在 django 模板中使用它们的对应键来迭代[重复]

Posted

技术标签:

【中文标题】字典值不能通过在 django 模板中使用它们的对应键来迭代[重复]【英文标题】:dictionary values can't be iterated through using their corresponding keys in django template [duplicate] 【发布时间】:2018-08-12 02:47:13 【问题描述】:

所以我有一个嵌套字典,格式如下:

data =   server:'rating':'class':'good, 'desc':'whatever', 'vulnerabilities':'heartbleed':'severity':'critical', 'desc':'terrible config'

我想使用键遍历值,我已经阅读了文档,这就是我在模板中所做的:

  % for key, value in data.items %
      <p> 'This is the key  key  and this is the value value'<p>
  % endfor %

到目前为止一切顺利,奇怪的是我无法使用 for 循环检索到的键获取值,即当我有这样的模板时:

  % for key in data.keys %]
       <p> 'This is the key: key' </p> 
       <p> 'This is the value:  data.key '<p>
  % endfor %

key 返回键没有问题。即使当我做data.server 时,我也能毫无问题地得到相应的值。奇怪的是,这条线 data.key 并没有像我直觉的那样工作。

在一个循环中,key==serverdata.server 有效,但 data.key 无效。我在这里做错了什么?

【问题讨论】:

因为您的字典没有名为'key' 的键?它确实有一个密钥'server',这就是它起作用的原因。您将不得不使用 django 等效的 data[key],而不是 data['key'],这就是它现在正在做的事情。 @Graipher tnx,现在我明白为什么它不起作用了。 django 是否有 data[key] 的等价物? 对不起,我对django一无所知。但我确信有办法。 我不明白你为什么要这样做,当迭代 .items 工作时。 @DanielRoseman 我的实际字典远比这复杂。每个初始键都有自己的 rating:rating 我想用它来设置相应容器的样式... 【参考方案1】:

在模板引擎中动态的唯一方法是使用custom template filter

查看Django template how to look up a dictionary value with a variable 了解入门实施

【讨论】:

以上是关于字典值不能通过在 django 模板中使用它们的对应键来迭代[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量传递给自定义 Django 模板加载器?

Django模板:如何通过每个字典的嵌套属性重新组合字典列表?

在 django 模板中访问字典值

在 django 模板中访问字典值

如何在 django 模板中访问字典值

如何在 django 模板中迭代字典的列表值