【问题标题】:Django Template - Increasing the value of a variable in a template in a for loopDjango 模板 - 在 for 循环中增加模板中变量的值
【发布时间】:2014-09-14 18:02:50
【问题描述】:

我需要针对我在 Django 模板的 for 循环中循环的每个项目显示排名。我最初在页面上显示 10 个项目,每次按下“加载更多”按钮时都会再加载 10 个项目。

我尝试使用{{ forloop.counter }},但这仅适用于前 10 项。由于调用涉及 AJAX,因此每次添加新项目时,它们的排名为 1-10。

我可以将rank 变量发送到模板,但我需要一个方法,每次在for 循环中将rank 变量加1。是否有任何默认的 Django 过滤器?或者谁能​​帮我为此编写一个自定义过滤器?

谢谢。

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    如果你已经有一个rank 整数,你可以简单地使用现有的add 过滤器来添加计数器:

    {{ forloop.counter0|add:rank }}
    

    【讨论】:

    • 这就是我刚刚想到的。谢谢。
    【解决方案2】:

    我最终使用添加过滤器组合了 {{ forloop.counter }}rank 变量。

    {{ forloop.counter|add:rank }}
    

    【讨论】:

      【解决方案3】:

      我的想法是创建一个计数器类,你将用它来增加你的排名

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

      【讨论】:

      • 每当我调用 {{ counter.increment }} 时,都会将字符串“None”输出到我的模板中
      • @Moritz 那是因为他忘了返回任何东西
      猜你喜欢
      • 2011-11-24
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 2012-03-28
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多