Django dict键,for循环中的值不起作用
Posted
技术标签:
【中文标题】Django dict键,for循环中的值不起作用【英文标题】:Django dict key,value in for loop does not work 【发布时间】:2019-05-26 21:52:07 【问题描述】:我遇到了一个 Django 问题,我无法在 for 循环中访问 dict 的值。它在 for 循环之外工作,而不是在里面。
我在这里错过了明显的东西吗?
Python:
err
err['else'] = 'class': 'Low', 'txt': 'zero'
err['if'] = 'class': 'High', 'txt': 'one'
data = 'errors': err
return render(request, 'index/error.html', data)
HTML 模板:
<p> errors </p>
<p> errors.if </p>
<p> errors.if.class </p>
% for error in errors %
<div class=" error.class "><p> error.txt </p></div>
% endfor %
上面 3 行用于代码调试,工作正常。 for 循环不会产生任何代码。
最好的问候, LVX
【问题讨论】:
【参考方案1】:您可能需要访问您称为errors
的dict
中的.items()
。只需遍历 dict
即可为您提供键,但不会提供值。
您可以将代码更改为:
% for k, v in errors.items %
<div class=" v.class "><p> v.txt </p></div>
% endfor %
当然,如果您不需要密钥(if
和 else
),那么您也可以使用 .values()
而不是 items()
来获取 dict
中的值。
【讨论】:
感谢拉尔夫,成功了。我觉得这是一种奇怪的方式,但如果你看一下代码,它就会有某种意义。 能否请您提供一个不知道关键信息的示例,例如:class 或 txt?【参考方案2】:Ralf 的回答对这个问题来说已经足够了,我只是想在这里补充一点信息。
当模板系统在变量名中遇到点时,它会按以下顺序尝试以下查找:
-
字典查找(例如:foo['bar'])
属性查找(例如:foo.bar)
方法调用(例如:foo.bar())
列表索引查找(例如:foo[2])
系统使用第一个有效的查找类型。
【讨论】:
【参考方案3】:你应该这样尝试—— 错误['class']
第二种方式—— 错误[key]['class']
使用 forloop - 对于 k,v 错误: 打印(v['class'])
【讨论】:
Rohit:根据我对 Django 的理解,这是不允许的。如果我错了,请纠正我。 @RohitGarg 您不能在Django
模板中使用括号进行访问。另见this answer以上是关于Django dict键,for循环中的值不起作用的主要内容,如果未能解决你的问题,请参考以下文章