我只有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是dictionary对象。但是当我运行它的时候。它显示错误:
argument of type 'Roster' is not iterable
我认为问题是模板中的dict对象被视为列表,所以它是不可迭代的。如何让python知道对象是dictionary而不是list?
问题不在于你认为它是什么。Python确切地知道对象的类型;你不需要告诉它你是在处理列表还是dict。我对Django的了解还不够,无法判断HTML中的东西在做什么,但错误消息似乎表明你正在传递既不是列表也不是dict的东西。你实际上在处理Roster
类型的东西。弄清楚为什么会发生这种情况,你就会发现问题所在。
请记住,您应该为字典使用另一个名称;您可以尝试以下操作:
isinstance(yourDict, dict)