python用for算加法_在Python中在django模板中对forloop.counter执行加法运算

我想在

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,反正也不会搞乱它.显而易见的解决方案是在迭代之前过滤掉列表,这可以在您的视图中完成,或者(如果您坚持在模板中执行)使用自定义过滤器.

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

def filteriternum(seq):

num = 0

for item in seq:

if not item:

continue

num += 1

yield num, item

在这里,您可以在视图中执行换行,也可以编写将执行换行的标记的自定义模板过滤器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值