For loop 如何在Django模板中添加、乘法数字变量?
我创建的JS代码段依赖于forloop.counter变量在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变量中,并在代码段中使
{%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)