在Django模板中,如何返回与条件匹配的列表的第一个元素?该列表可能为空。我想知道是否有一个过滤器找到迭代中的第一个元素以匹配特定条件,然后停止检查,类似于Python的next(https://stackoverflow.com/a/2364277/1337422)。
>>> lis = ['a', 1, 40, 'three', 5]
>>> next(x for x in lis if x == 1)
1
答案 0 :(得分:2)
没有内置的Django模板过滤器可以做到这一点。
如果您想要匹配特定条件,那么编写custom template filter会很容易。例如:
from django import template
register = template.Library()
@register
def first_one_in_list(l):
return next((x for x in l if x==1), default=None) # specify default to avoid stop iteration
如果你想在模板中指定任意条件,我认为你需要做一些hacky。 Django模板语言旨在防止模板中的复杂逻辑。