Django模板 - 在for循环中增加模板中变量的值

2 投票
3 回答
4592 浏览
提问于 2025-04-18 14:26

我需要在Django模板中显示一个排名,针对我在for循环中遍历的每个项目。我最开始在页面上显示10个项目,每次点击“加载更多”按钮时再加载10个。

我试过使用 {{ forloop.counter }},但这只对前10个项目有效。因为这个过程是通过AJAX进行的,每次新加载的项目的排名都是1到10。

我可以把一个 rank 变量传递给模板,但我需要一种方法,在for循环中每次将这个 rank 变量加1。Django有没有现成的过滤器可以做到这一点?或者有没有人能帮我写一个自定义的过滤器?

谢谢。

3 个回答

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

如果你已经有一个叫做 rank 的整数,那你可以直接使用现有的 add 过滤器来加上计数器:

{{ forloop.counter0|add:rank }}
3

我最后把 {{ forloop.counter }}rank 这两个变量结合起来,使用了加法过滤器。

{{ forloop.counter|add:rank }}

撰写回答