如何在python(django-template)中动态地知道类型是dictionary或list



我只有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)

相关内容

  • 没有找到相关文章

最新更新