Django模板语言解压缩dict

时间:2018-05-30 20:23:28

标签: python django templates django-templates

我有一个字典(作为另一个对象的一部分)传递给django模板语言。 该对象称为'民意调查'具有属性self.textself.votes,前者是字符串,后者是字典。 这个词典看起来像这样: {'a1': 45.92422502870264, 'a2': 53.50172215843857} 我正在尝试使用以下内容列出每个标签及其附带的编号:

{% for l, x in poll.votes %}
<p>{{ l }} {{ x }}</p>
{% endfor %}

Django回复

Exception Type: ValueError
Exception Value:    Need 2 values to unpack in for loop; got 3.

我尝试了.iteritems - 文档解释说.iteritems不是正确的方法,但他们没有解释 的正确方法。

2 个答案:

答案 0 :(得分:3)

你只需要像在python中一样迭代,但是在Djangos模板语言(DTL)语法中

 {% for key, value in dictionary.items %}

您的poll.votes是一个字典,但您不是在代码中迭代项目而是迭代。

你可以找到一个关于jinja here的概述。值得注意的是,jinja并不是django使用的东西,但由于很多东西是相同的(jinja基于DTL)而不是通过djangos docs挖掘它,因此它很方便用于精简参考。

对于Djangos tempaltes继承人the documentation reference

答案 1 :(得分:1)

您也可以这样做:

{% for variable in poll %}
   {{ variable.name }} - {{ variable.votes }}
{% endfor %}