我需要在Django模板中的for循环中显示我正在循环的每个项目的排名。我最初在页面上显示10个项目,每次按下加载更多按钮时再加载10个项目。
我尝试使用{{ forloop.counter }}
,但仅适用于前10个项目。由于调用涉及AJAX,因此每次添加新项目时,它们的排名都是1-10。
我可以向模板发送rank
变量,但我需要一种方法,每次在for循环中将rank
变量递增1。这有没有默认的Django过滤器?或者任何人都可以帮我写一个自定义过滤器吗?
感谢。
答案 0 :(得分:4)
如果您已经有rank
整数,则可以使用现有的add
过滤器添加计数器:
{{ forloop.counter0|add:rank }}
答案 1 :(得分:2)
我的想法是创建一个用于增加等级的计数器类
class Counter:
counter = 0
def increment(self):
self.counter += 1
return self.counter
def set_to_zero(self):
self.counter = 0
return self.counter
并在上下文中传递它。 然后,每次你进入循环,你可以用
递增它{{ counter.increment }}
答案 2 :(得分:2)
我最后使用添加过滤器梳理了{{ forloop.counter }}
和rank
变量。
{{ forloop.counter|add:rank }}