Django模板:测试变量是否在列表或字典中

时间:2010-06-25 12:58:18

标签: django templates

想知道是否有办法使用内置标签和过滤器测试变量是否在django中的列表或dict中。

即:{% if var|in:the_list %}

我没有在文档中看到它,如果没有,我会尝试自定义,但我不想做已经完成的事情。

由于

3 个答案:

答案 0 :(得分:35)

在Django 1.2中,你可以做到

{% if var in the_list %}
像在Python中一样。

否则是的,你需要一个自定义过滤器 - 它虽然是三行的:

@register.filter
def is_in(var, obj):
    return var in obj

答案 1 :(得分:3)

想要从模板中传递逗号分隔的字符串吗?创建自定义模板标签:

from django import template
register = template.Library()

@register.filter
def in_list(value, the_list):
    value = str(value)
    return value in the_list.split(',')

然后你可以这样称呼它:

{% if 'a'|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}

它也适用于变量:

{% if variable|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}

答案 2 :(得分:-2)

在Django 3中... 只需通过:

someHtmlPage.html

<html>
    {%if v.0%}
        <p>My string {{v}}</p>
    {%else%}
        <p>My another typy {{v}}</p>
    {%endif%}
</html>