2010-06-25 73 views
14

想知道是否有方法來測試變量是否在django中的列表或字典中,使用內置的標籤和過濾器。Django模板:測試變量是否在列表或字典

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

我沒有看到它在該文檔中,如果不將嘗試一些自定義的,但我不想做一些已經完成。

感謝

回答

29

在Django的1.2,你可以做

{% if var in the_list %} 

,你在Python會。

否則是的,你需要一個自定義過濾器 - 這是一個三班輪雖然:

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

可以將列表是一樣的模板:'{ %如果var在['item1','item2','item3']%}' – Sevenearths 2013-04-29 10:48:18

+3

@Sevenearths我剛剛嘗試過並且可以確認,從Django 1.5.1開始,列表**不能在**中定義'如果'這樣的陳述。 – Patrick 2013-06-25 16:33:09

+0

那我們怎麼去做呢? – laycat 2013-06-26 01:04:12

0

想通過從模板分離串逗號?創建自定義templatetag:

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 %}