For loop 如何在Django模板中添加、乘法数字变量?

For loop 如何在Django模板中添加、乘法数字变量?,for-loop,tags,django-templates,For Loop,Tags,Django Templates,我创建的JS代码段依赖于forloop.counter变量在{%for key,value in data.items%}..{%endfor%}标记中可用 有没有办法将数学运算符(*、-、+、/)与forloop.counter变量一起使用?文档中有一个过滤器 我很确定在Django模板中没有内置的方法来对数字进行其他数学运算。然而,你总是可以。这样做并不总是一个好主意 您希望将逻辑保留在视图中,并将渲染保留在模板中 在您的例子中,您应该将计数器存储在JavaScript变量中,并在代码段中使

我创建的JS代码段依赖于forloop.counter变量在
{%for key,value in data.items%}..{%endfor%}
标记中可用

有没有办法将数学运算符(*、-、+、/)与
forloop.counter
变量一起使用?

文档中有一个过滤器

我很确定在Django模板中没有内置的方法来对数字进行其他数学运算。然而,你总是可以。这样做并不总是一个好主意

您希望将逻辑保留在视图中,并将渲染保留在模板中


在您的例子中,您应该将计数器存储在JavaScript变量中,并在代码段中使用它。

在Mathieu Marques的提示之后,下面是我使用的方法

使用分页代码段后,模板每页呈现5条记录。每页演示文稿重置forloop.counter。要在每页创建连续计数器

from django import template
register = template.Library()

@register.filter(name='cei')
def compute_exact_id(value, rb_page_no):    
    new_id = value+(5*(rb_page_no-1))    ## here's the mathematical operation
    return new_id

其中,
rb_page_no
是当前页码,将
{%load extra_filter%}
放在我的模板上,extra_filter是文件名,我将
compute_-exact_-id

放在其中,可以使用django内置模板标记和过滤器:

  • 将5添加到forloop.counter
    {{forloop.counter|add:5}}
  • 从forloop.counter
    {{forloop.counter}中减去5添加:“-5”}
  • 按5设置forloop.counter<代码>{%widthratio forloop.counter 5 1%}
  • 将forloop.counter乘以5
    {%widthratio forloop.counter 1 5%}
    • 使用。
      加法
      过滤器不会强制数字为整数,因此您可以添加浮点:

      {% load mathfilters %}
      {{ num1 | addition:num2 }}
      

      我在模板文件carts.html中创建下一个

      {% extends 'base.html'%} {% block contenido %}
      <h1>Checkout</h1>
      <p>Subtotal + IVA: ${{ orden.sub_total }}</p>
      <p>Envio:$ {{ orden.costo_envio }}</p>
      <p>Total a pagar:$ {{ orden.sub_total|add:orden.costo_envio }}</p>
      {% endblock %}
      
      对我来说,这条裙子很好用


      链接不再工作。最新版本。很明显,它对浮点数进行了取整,是吗?
      def carrito_checkout(request):
          if 'cart_id' in request.session:
              orden_object, created = Orden.objects.get_or_new(request)
              if orden_object is None:
                  return redirect('carrito:home')
              print(orden_object)
              context = {
                  "orden": orden_object
              }
      
          return render(request, 'carrito_checkout.html', context=context)