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