Django模板语言解包字典

Posted

技术标签:

【中文标题】Django模板语言解包字典【英文标题】:Django template language unpacking a dict 【发布时间】:2018-11-09 18:57:41 【问题描述】:

我有一个字典(作为另一个对象的一部分)传递给 django 模板语言。 名为 'poll' 的对象具有属性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 不是正确的方法,但他们没有解释正确的方法是什么

【问题讨论】:

@Pythonista 谢谢!你想把它作为答案,我会接受吗? 【参考方案1】:

您只需像在 python 中一样进行迭代,但使用 Django 的模板语言 (DTL) 语法

 % for key, value in dictionary.items %

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

您可以找到 jinja 的概述here。值得注意的是,jinja 不是 django 使用的,但它可以方便地作为浓缩参考,因为很多东西都是相同的(jinja 基于 DTL),而不是通过 djangos 文档进行挖掘。

对于 Djangos tempaltes heres the documentation reference

【讨论】:

【参考方案2】:

你也可以这样做:

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

【讨论】:

以上是关于Django模板语言解包字典的主要内容,如果未能解决你的问题,请参考以下文章

在django模板的一本字典里面的字典

Jinja2模板语言

django的模板语言

Django框架 之 模板语言

模板语言

Django 模板语言 HTML 过滤器