检查是否存在于列表django模板中
我想检查一个值是否属于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模
{%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
。因此,它仅适用于简单、完全不同的逗号分隔字符串。