django模板中做一些加减乘除基本运算

2022-05-06 13:31:35 浏览数 (1)

Django模版加法:

{{ value|add:10}} value=5,则返回15

Django模版减法:

{{value|add:-10}} value=5,则返回-5,这个比较好理解,减法就是加一个负数

Django模版乘法:

{%  widthratio 5 1 100 %} 上面的代码表示:5/1 *100,返回500,widthratio需要三个参数,它会使用 参数1/参数2*参数3,所以要进行乘法的话,就将参数2=1即可

Django做除法,这里用到widthratio这个方法

 <td>{% widthratio foo.product_amount 100 1 %}</td>#}

 如果想将widthratio函数处理后的值当做变量,可以如下方法  {% widthratio this_value max_value max_width as width %} {% blocktrans %}The width is: {{ width }}{% endblocktrans %}

    数据保留两位小数

  <td>{{ foo.product_amount |floatformat:5 }}</td>   register = template.Library()

    一些复杂一些的运算

利用 add 这个filter ,可以做更疯狂的事: 计算 A^2: {% widthratio A 1 A %} 计算 (A B)^2: {% widthratio A|add:B 1 A|add:B %} 计算 (A B) * (C D): {% widthratio A|add:B 1 C|add:D %}

    除法并保留小数

首先定义方法在templatehelper.py文件中 @register.filter def div(value, div):     '''     分转化为元,保留两位小数     :param value:     :param div:     :return:     '''     return round((value / div), 2) 然后在模板中可以按照如下使用,当然前提是{% load templatehelper %}: <td>{{ foo.product_amount |div:100 }}</td>

尝试过一个笨办法,但是不生效,而且就算生效,也会出现忽略掉小数点后面得值的情况,所以不建议:

<td>{% widthratio foo.product_amount 100 1 as width %}{% blocktrans %}{{ width }}{% endblocktrans %}</td>#}

0 人点赞