Шаблоны Django: тестирование, если переменная находится в списке или dict

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

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

Я не вижу его в документах и ​​попытаюсь выполнить что-то обычное, если нет, но я не хочу делать что-то, что уже сделано.

Спасибо

Ответы

Ответ 1

В Django 1.2 вы можете просто сделать

{% if var in the_list %}

как и в Python.

В противном случае да, вам понадобится настраиваемый фильтр - это трехстрочный, хотя:

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

Ответ 2

Хотите передать запятую строку из шаблона? Создайте собственный шаблонный шаблон:

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