Проверить наличие в списке шаблонов django

Я хочу проверить, принадлежит ли значение списку в шаблоне django. Что-то вроде этого

{%, если значение в ['Pass', 'Fail']%}

Как я могу это достичь?

Ответ 1

Я не думаю, что вы можете определить список непосредственно в шаблоне. Вы можете передать список шаблону и сделать

{% if value in my_list %}

Например:

{% if name in 'foo,bar' %}
    bla
{% endif %}

В качестве альтернативы, вы можете написать шаблонный тег, который принимает такие параметры:

{% ifinlist value "val1,val2,val3" %}

Ответ 2

Шаблон Django:

{% value|ifinlist:"val1,val2,val3" %}

Тег шаблона:

from django import template

register = template.Library()

@register.filter(name='ifinlist')
def ifinlist(value, list):
    return True if value in list else False

Ответ 3

Вы можете написать условие if как

{% if значение в 'Pass, Fail'%}

Нет необходимости тега шаблона или списка из бэкэнда

Ответ 4

Как передать список вашему шаблону? Я лично использую атрибут extra_context в общих представлениях, как это:


class MyObjectDetailView(DetailView):
    model = MyObject
    template_name = "path/to/object_detail.html"
    extra_context = {'DISABLED': [model.ACCEPTED, model.REFUSED]}

Затем в моем шаблоне, например, отключить btn:


<input class="btn"{% if object.status in DISABLED %} disabled="disabled"{% endif %}">