django 模板中无法实现计算,收集的方案。在django template 中实现乘法,除法运算

用django的divisibleby标签实现,如下:
程序代码 程序代码

    {% for each in somelist %}

    {% if forloop.counter0|divisibleby:2 %}

    <div class=”class1″></div>

    {% else %}

    <div class=”class2″></div>

    {% endif %}

    {% endfor %}

divisibleby标签的意义是用后面的参数去除,除尽为True,否则为False
====================================================================
django模板内的字符串截取
参考http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#built-in-filter-reference
{{ content |truncatewords:"30″ }} 变量前30个字符,用于中文不行
{{ content |slice:"30″ }}       取变量前500个字符,可用于中文 
====================================================================
django模板内的简单计算
参考http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#built-in-filter-reference
简单相加
{{ result.complete_quality|add:result.work_bearing|add:result.complete_speed }} 




Django的模板运算功能很差,基本是不提供,要自己扩展,或者在view中先计算好。然后render到界面上显示。当然,有很多种办法解决在django 模板中进行计算的方法。至少可以通过自己扩展 filter,或者tag, 完全可以做到。下面介绍今天遇到的一个关于乘法的运算,我发现是可以通过django 自带的tag: widthratio 来实现乘法运算,看起来有点变态,但确实可行.
先看一下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::

        <img src='bar.gif' height='10' width='{% widthratio this_value max_value 100 %}' />

    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  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值