gpt4 book ai didi

python - 在django模板中对forloop.counter进行加法运算

转载 作者:太空狗 更新时间:2023-10-30 01:35:00 25 4
gpt4 key购买 nike

我想针对给定条件在 django 模板中执行减少 forloop.counter 的值,在 django 中是否可行。

下面是演示的例子

{% for i in item %}
{% if forloop.counter0|divisibleby:4 %}
Start
{% endif %}
{% if i %}
item{{ forloop.counter }}
{% else %}
######### Here I want to reduce value of forloop.counter by 1 ###########
{% endif %}
{% if forloop.counter|divisibleby:4 %}
End
{% endif %}

{% endfor %}

在上面的代码中,8 个完美项目的输出将是

Start
item1
item2
item3
item4
End
Start
item5
item6
item7
item8
End

但假设 item2 为 None,则输出为

Start
item1
item3
item4
End
Start
item5
item6
item7
item8
End

如果不满足条件,我想通过每次减少 forloop 的值以适当的升序(每步递增 1)的形式打印它。请不要建议自定义模板标签,我知道这一点,我认为它是最后的选择。

最佳答案

我真的怀疑 django 会让你轻易地弄乱 forloop.counter,而且无论如何也不会弄乱它。显而易见的解决方案是在迭代之前过滤掉您的列表,这可以在您的 View 中完成,或者(如果您坚持在模板中这样做)使用自定义过滤器。

或者您可以将您的列表包装在一个生成器函数中,该函数将负责过滤和编号,即:

def filteriternum(seq):
num = 0
for item in seq:
if not item:
continue
num += 1
yield num, item

同样,您可以在 View 中进行包装,也可以编写一个自定义的标签模板过滤器来进行包装。

关于python - 在django模板中对forloop.counter进行加法运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com