如何在Django模板中从非列表中分辨列表?

时间:2016-11-18 21:59:55

标签: python django

我有一个Django模板,我有时想传递一个列表,有时想传递一个值。模板如何判断它被赋予了什么?

我认为价值会像其中一样设定:

context = {
    'foo' : 'bar
}

或:

context = {
     'foo' : ['bar', 'bat', 'baz']
}

然后,模板的代码看起来像这样:

{% if foo isa list %}
    {% for item in foo %}
        {{ item }}<br>
    {% endfor %}
{% else %}
    {{ item}}<br>
{% endif %}

例如,我可以将其设置为foo或foolist,并检查其中一个。但是,只要有一个列表或者不是foo,它会更好(imo)。

2 个答案:

答案 0 :(得分:0)

我认为你的方法是不必要的复杂。 我会选择一个清单:

<强> views.py

foo_list = ['bar']
context = {
    'foo': foo_list,
    'foo_len': len(foo_list),
}

<强>模板

{% if foo_len == 1 %}
    {{ foo.0 }}
{% else %}
    {% for item in foo %}
        {{ item }}
    {% endfor %}
{% endif %}

答案 1 :(得分:0)

如果您打算这样做,那么只需添加一个检查,它没有format(如果是字符串)方法并且有0索引,如果是,那么它的a列表其他被认为是单值

{% if foo.0 and not foo.format %}
    {% for item in foo %}
        {{ item }}<br>
    {% endfor %}
{% else %}
    {{ item}}<br>
{% endif %}