如何在Django模板中进行数学运算?

Tom*_*mmy 97 python django django-templates

我想做这个:

100 - {{ object.article.rating_score }} 
Run Code Online (Sandbox Code Playgroud)

例如,如果{{object.article.rating_score}}等于"80",则输出将为"20".如何在模板级别执行此操作?我无法访问python代码.

Dan*_*man 141

您可以使用add过滤器:

{{ object.article.rating_score|add:"-100" }}
Run Code Online (Sandbox Code Playgroud)

  • 对于乘法和除法,您可以滥用内置的`widthratio`模板标记.要计算a*b使用`{%widthratio a 1 b%}`,对于a/b使用`{%widthratio ab 1%}`.唯一的缺点是,结果在返回之前四舍五入为整数.[使用Django的widthratio模板标签进行乘法和除法](http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/) (30认同)
  • 使用django-mathfilters.http://pypi.python.org/pypi/django-mathfilters (7认同)
  • @Erik应该是它自己的答案 - 更好的解决方案. (2认同)
  • 更新了文档中 [add](https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#add) 的链接 (2认同)

Eri*_*rik 29

使用django-mathfilters.除了内置的加法滤波器,它还提供滤波器来减去,乘法,除法和取绝对值.

对于上面的具体示例,您将使用{{ 100|sub:object.article.rating_score }}.


bdd*_*bdd 18

通常,建议您在视图中执行此计算.否则,您可以使用添加过滤器.

  • 你如何在模板的循环内做到这一点? (2认同)