Python Django dict键,for循环中的值不起作用

Python Django dict键,for循环中的值不起作用,python,django,dictionary,key,Python,Django,Dictionary,Key,我遇到了一个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

我遇到了一个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

您可能需要访问dict中被称为错误的项。只需在dict上迭代就可以得到键,而不是值

您可以将代码更改为:

{% for k, v in errors.items %}
  <div class="{{ v.class }}"><p>{{ v.txt }}</p></div>
{% endfor %}

当然,如果您不需要if和else键,那么您也可以使用.values而不是items来获取dict中的值。

您可能需要访问dict中称为errors的.items。只需在dict上迭代就可以得到键,而不是值

您可以将代码更改为:

{% for k, v in errors.items %}
  <div class="{{ v.class }}"><p>{{ v.txt }}</p></div>
{% endfor %}
当然,如果您不需要if和else键,那么您也可以使用.values而不是items来获取dict中的值。

您应该这样尝试- 错误['class']

第二条路- 错误[key]['class']

使用forloop- 对于错误中的k,v: printv['class']

您应该这样尝试- 错误['class']

第二条路- 错误[key]['class']

使用forloop- 对于错误中的k,v:
printv['class']

拉尔夫的回答足以回答这个问题,我只想在这里补充一点信息

当模板系统遇到变量名中的点时,它会按以下顺序尝试查找:

查字典例如:foo['bar'] 属性查找,例如:foo.bar 方法调用例如:foo.bar 列表索引查找例如:foo[2]
系统使用第一种有效的查找类型。

Ralf的答案足以回答这个问题,我只想在这里添加一条额外的信息

当模板系统遇到变量名中的点时,它会按以下顺序尝试查找:

查字典例如:foo['bar'] 属性查找,例如:foo.bar 方法调用例如:foo.bar 列表索引查找例如:foo[2]
系统使用第一种有效的查找类型。

谢谢Ralf,成功了。谢谢,拉尔夫,我觉得这很奇怪。我觉得这是一种奇怪的方式,但如果你看一下代码,它在某种程度上是有道理的。罗希特:就我对Django的理解而言,这是不允许的。如果我错了,请纠正我。@RohitGarg您不能在Django模板中使用括号进行访问。另见Rohit:据我对Django的理解,这是不允许的。如果我错了,请纠正我。@RohitGarg您不能在Django模板中使用括号进行访问。另见