我想检查一个值是否属于Django模板中的列表。类似这样:
{% if value in ['Pass', 'Fail'] %}
我该怎么做?{% if value in ['Pass', 'Fail'] %}
我该怎么做?我认为你不能直接在模板中定义列表。你可以将一个列表传递到模板中,并执行:
{% if value in my_list %}
例如:{% if name in 'foo,bar' %}
bla
{% endif %}
或者,您可以编写一个模板标签,像这样使用参数:
{% ifinlist value "val1,val2,val3" %}
my_list
传递到模板中,或者如何编写ifinlist
函数。 - Hack-R'foo,bar'
示例不适用/不正确,因为 'foo,bar'
是一个字符串,而不是一个列表。 - Jan Kyu Peblik你可以这样写if条件:
{% if value in '通过,未通过' %}
无需来自后端的模板标签或列表
value = 'Pass'
,那么'Pass'是'Pass,Fail'的子字符串。 - YPCrumblevalue
是否属于一系列字符。OP的问题是关于一个列表而不是一个str
。但你是对的,我错了,这是一种有效的方法,我会删除这个无用的帖子。 - Emilio Conteif 'a' in 'Pass,Fail'
都会返回True
。因此,它仅适用于简单、不同的逗号分隔字符字符串。 - Jan Kyu PeblikDjango模板:
{% value|ifinlist:"val1,val2,val3" %}
模板标签:
from django import template
register = template.Library()
@register.filter(name='ifinlist')
def ifinlist(value, list):
return value in list
list
- 它会掩盖内置名称。 - maciejwwwextra_context
属性,例如:
class MyObjectDetailView(DetailView):
model = MyObject
template_name = "path/to/object_detail.html"
extra_context = {'DISABLED': [model.ACCEPTED, model.REFUSED]}
<input class="btn"{% if object.status in DISABLED %} disabled="disabled"{% endif %}">