我在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
答案 0 :(得分:7)
您可能需要访问您称为.items()
的{{1}}中的dict
。只需在errors
上进行迭代,即可为您提供密钥,但不会提供值。
您可以将代码更改为:
dict
当然,如果不需要键({% for k, v in errors.items %}
<div class="{{ v.class }}"><p>{{ v.txt }}</p></div>
{% endfor %}
和if
),那么也可以使用else
而不是.values()
来获取内部的值items()
。
答案 1 :(得分:2)
拉尔夫的答案足以解决这个问题,我只想在这里添加更多信息。
当模板系统遇到变量名中的点时,它将按以下顺序尝试以下查找:
系统使用第一种有效的查找类型。
答案 2 :(得分:0)
您应该尝试这样- 错误['class']
第二种方式- 错误[key] ['class']
使用forloop- 对于错误的k,v: print(v ['class'])