检查是否存在于列表django模板中

检查是否存在于列表django模板中,django,django-templates,Django,Django Templates,我想检查一个值是否属于django模板中的列表。像这样的 {%if['Pass','Fail']%中的值} 如何实现这一点?我认为您不能直接在模板中定义列表。您可以将列表传递给模板并执行以下操作 {% if value in my_list %} 例如: {% if name in 'foo,bar' %} bla {% endif %} 或者,您可以编写一个模板标记,该标记采用如下参数: {% ifinlist value "val1,val2,val3" %} Django模

我想检查一个值是否属于django模板中的列表。像这样的

{%if['Pass','Fail']%中的值}


如何实现这一点?

我认为您不能直接在模板中定义列表。您可以将列表传递给模板并执行以下操作

{% if value in my_list %}
例如:

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

或者,您可以编写一个模板标记,该标记采用如下参数:

{% ifinlist value "val1,val2,val3" %}
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

您可以将if条件写为

{%if值位于“通过,失败”%}


不需要来自后端的模板标记或列表

如何将列表传递到模板?我个人在一般视图中使用
extra\u context
属性,如下所示:

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

类MyObjectDetailView(DetailView):
模型=MyObject
template\u name=“path/to/object\u detail.html”
额外上下文={'DISABLED':[model.ACCEPTED,model.densed]}
然后在我的模板中,例如,要禁用btn:



@默认情况下,Django中不存在sunnyiitkgp、ifinlist。它可能是一个你可以自己编写的模板标签。答案可以通过显示完整的解决方案来改进,即如何设置并将
my_list
传递到模板中,或者如何编写
ifinlist
。这里的
'foo,bar'
示例不适用/不正确,因为
'foo,bar'
是一个字符串,而不是一个列表。请检查文档。在django模板中不能这样做,首先需要一个列表。@EmilioConte此方法适用于问题中的字符串列表,请参阅。例如,如果
value='Pass'
,则'Pass'是'Pass,Fail'的子字符串。@YPCrumble'Pass,Fail'不是字符串列表,而是字符串本身。此方法用于测试
是否属于字符链。OP的问题是关于列表而不是
str
。但你是对的,我错了,这是一个有效的方法,我将删除这篇无用的文章。这实际上只有在你不关心匹配子字符串的情况下才有效。例如,
如果“通过”中的“a”,则“失败”
对于任一“项目”都将是
True
。因此,它仅适用于简单、完全不同的逗号分隔字符串。