【发布时间】:2013-12-27 06:02:57
【问题描述】:
我有三个列表,我只想对这些列表使用一个 for 循环,因为我正在使用自定义过滤器。我不能使用 zip,因为如果我的列表之一为空,那么 zip 将返回空列表,所以我想我必须为此使用自定义过滤器。
代码:
a = []
b = [{"qq":1},{"ww":2},{"ee":3}]
c = [{"rr":4}]
现在我希望我的自定义过滤器只返回这 3 个列表中的一个。
自定义过滤器:
def zip(a,b):
return a + b
在我的模板中我使用了这个:
1) 为两个列表工作
{% for x in a|zip:b %}
{% endfor %}
2) 不适用于三个列表:
{% for x in a|zip:b|zip:c %}
{% endfor %}
3) 如果制作两个过滤器 zip1 和 zip2 并使用它,那么它也不起作用:
{% for x in a|zip1:b|zip2:c %}
{% endfor %}
4)我也尝试发送到一个过滤器中的列表,以便我可以在那里拆分它们并完成我的工作,但这给了我错误只能将列表(不是“SafeText”)连接到列表
{% for x in a|zip1:'b,c' %}
{% endfor %}
我们将不胜感激。
【问题讨论】:
-
您是否尝试过使用内置的
add过滤器?它可以处理将两个列表添加在一起 - 但是您的自定义zip过滤器使用对我来说看起来相同的行为,我不确定为什么这不起作用。试试{% for x in a|add:b|add:c %}- 有关添加两个列表的示例,请参见docs.djangoproject.com/en/dev/ref/templates/builtins/#add。 -
实际上问题出在我的第三个数组中,即第二个过滤器不起作用,但是我发现当你建议我使用 add 时。谢谢
标签: python django django-templates