在django template 中实现乘法,除法运算
By:Roy.LiuLast updated:2012-12-25
Django的模板运算功能很差,基本是不提供,要自己扩展,或者在view中先计算好。然后render到界面上显示。当然,有很多种办法解决在django 模板中进行计算的方法。至少可以通过自己扩展 filter,或者tag, 完全可以做到。下面介绍今天遇到的一个关于乘法的运算,我发现是可以通过django 自带的tag: widthratio 来实现乘法运算,看起来有点变态,但确实可行.
先看一下django 官方的解释
这说明,widthratio 通常用来显示图表,比例时用的,一个数字占了多少百分比等。但仔细想想,如果将某些数字变成特定的数字,不就是乘除法运算了吗?请看:
当然,这种方法在django中实现乘除法比较变态,看起来也不爽,更好的方法,是可以扩展自己的标签。在后面打算自己扩展一个计算乘法的标签,应该好很多。
在django中实现其它一些简单的计算,参考这篇文章:http://www.yihaomen.com/article/python/186.htm
用django template tag 的方式实现可以参考这篇文章:
http://www.yihaomen.com/article/python/339.htm
先看一下django 官方的解释
""" For creating bar charts and such, this tag calculates the ratio of a given value to a maximum value, and then applies that ratio to a constant. For example:: Above, if ``this_value`` is 175 and ``max_value`` is 200, the image in the above example will be 88 pixels wide (because 175/200 = .875; .875 * 100 = 87.5 which is rounded up to 88). """
这说明,widthratio 通常用来显示图表,比例时用的,一个数字占了多少百分比等。但仔细想想,如果将某些数字变成特定的数字,不就是乘除法运算了吗?请看:
乘法 A*B: {% widthratio A 1 B %} 除法 A/B: {% widthratio A B 1 %} 利用 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 %}
当然,这种方法在django中实现乘除法比较变态,看起来也不爽,更好的方法,是可以扩展自己的标签。在后面打算自己扩展一个计算乘法的标签,应该好很多。
在django中实现其它一些简单的计算,参考这篇文章:http://www.yihaomen.com/article/python/186.htm
用django template tag 的方式实现可以参考这篇文章:
http://www.yihaomen.com/article/python/339.htm
From:一号门
Previous:得到java list 中重复的部分
COMMENTS