电竞比分网-中国电竞赛事及体育赛事平台

分享

python用for算加法_在Python中在django模板中對forloop.counter執(zhí)行加法運(yùn)算

 rongq2007 2021-07-17

https://blog.csdn.net/weixin_39522423/article/details/111790580

我想在

django模板中為給定條件執(zhí)行減少forloop.counter的值,是否可以在django中執(zhí)行.

下面舉例說明

{% 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

但假設(shè)item2為None,則輸出為

Start

item1

item3

item4

End

Start

item5

item6

item7

item8

End

如果條件不滿足,我想通過每次減少forloop的值以適當(dāng)?shù)纳?每步增加1)的形式打印它.請不要建議自定義模板標(biāo)簽,我知道這一點,我認(rèn)為它是最后一個選項.

我真的很懷疑django會讓你輕松搞亂forloop.counter,反正也不會搞亂它.顯而易見的解決方案是在迭代之前過濾掉列表,這可以在您的視圖中完成,或者(如果您堅持在模板中執(zhí)行)使用自定義過濾器.

或者您可以將列表包裝在生成器函數(shù)中,該函數(shù)將負(fù)責(zé)過濾和編號,即:

def filteriternum(seq):

num = 0

for item in seq:

if not item:

continue

num += 1

yield num, item

在這里,您可以在視圖中執(zhí)行換行,也可以編寫將執(zhí)行換行的標(biāo)記的自定義模板過濾器.

————————————————

版權(quán)聲明:本文為CSDN博主「weixin_39522423」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/weixin_39522423/article/details/111790580

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多