1

我只有 django python 代码,用于过滤器模板

@register.filter("dict")
def dict(dict, key):
    if(dict and (key in dict)):
        return dict[key]
    else:
        return None

我在 html 文件中调用:

<table>
<tr><th>Mon</th></tr>
        {% for item in COMP|hash:"ITEMS"|hash:"roster" %}
          {{item|dict:"Roster"}}
        {% endfor %}
 </table>

他们 dict 是字典对象。但是当我运行它时。它向我显示错误:

argument of type 'Roster' is not iterable

我认为问题在于模板中的 dict 对象被视为列表,因此它是不可迭代的。如何让python知道对象是字典而不是列表?

4

2 回答 2

0

问题不是你想的那样。Python 确切地知道对象是什么类型;您无需告诉它您使用的是列表还是字典。我对 Django 了解不多,无法告诉 HTML 中的内容在做什么,但错误消息似乎表明您传入的内容既不是列表也不是字典。您实际上正在使用 type 的东西Roster。弄清楚为什么会这样,你就会找出问题所在。

于 2013-07-03T02:32:34.013 回答
0

请记住,您应该为字典使用另一个名称;您可以尝试以下方法:

isinstance(yourDict, dict)
于 2013-07-03T02:23:20.700 回答