2010-06-25 2 views
14

задается вопросом, есть ли способ проверить, находится ли переменная внутри списка или dict в django, используя встроенные теги и фильтры.Шаблоны Django: тестирование, если переменная находится в списке или dict

Ie: {% 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 in ['item1', 'item2', 'item3']%} ' – Sevenearths

+3

@Sevenearths Я просто попробовал это и могу подтвердить, что с Django 1.5.1 список ** не может быть определен ** в 'if' заявление вроде этого. – Patrick

+0

как бы мы это сделали? – laycat

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 %} 
Смежные вопросы