我创建的 JS 片段依赖于标签中可用的 forloop.counter 变量{% for key, value in data.items %}..{% endfor %}
。
有没有办法将数学运算符(*、-、+、/)与forloop.counter
变量一起使用?
我创建的 JS 片段依赖于标签中可用的 forloop.counter 变量{% for key, value in data.items %}..{% endfor %}
。
有没有办法将数学运算符(*、-、+、/)与forloop.counter
变量一起使用?
可以使用 django 内置的widthratio模板标签并添加过滤器:
{{forloop.counter|add:5}}
{{forloop.counter|add:"-5"}}
{% widthratio forloop.counter 5 1 %}
{% widthratio forloop.counter 1 5 %}
使用django-mathfilters。过滤器不会将addition
数字强制为整数,因此您可以添加浮点数:
{% 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)
对我来说,这种方法很好用
在 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
.