A set of simple math filters for Django
Project description
django-mathfilters is a pip-installable Python 2/3 module that provides different simple math filters for Django.
Django provides an add template filter, but no corresponding subtracting, multiplying or dividing filters.
Django ticket #361 has been closed as wontfix, so I had to create an alternative that is easy to install in a new Django project.
It currently supports int, float, Decimal and cDecimal types, or any other type that can be converted to int or float.
WARNING: Note that when you have the ``cdecimal`` package installed, I assume all ``Decimal`` values that are passed to the tag are of ``cdecimal`` type. If they aren’t, weird things may happen.
Installation
$ pip install django-mathfilters
Then add mathfilters to your INSTALLED_APPS.
Usage
You need to load mathfilters at the top of your template. The script provides the following filters:
sub – subtraction
mul – multiplication
div – division
abs – absolute value
mod – modulo
Example:
{% load mathfilters %}
...
<h1>Basic math filters</h1>
<ul>
<li>8 + 3 = {{ 8|add:3 }}</li>
<li>13 - 17 = {{ 13|sub:17 }}</li>
{% with answer=42 %}
<li>42 * 0.5 = {{ answer|mul:0.5 }}</li>
{% endwith %}
{% with numerator=12 denominator=3 %}
<li>12 / 3 = {{ numerator|div:denominator }}</li>
{% endwith %}
<li>|-13| = {{ -13|abs }}</li>
</ul>
Version Support
This module supports Python 2.6–2.7 and 3.2–3.4 as well as PyPy.
Supported Django versions are 1.1 to 1.6.
See https://travis-ci.org/dbrgn/django-mathfilters for the full build matrix. (Python 3.4 is not yet included as it’s not yet supported by Travis CI.)
Changelog
v0.2.1 (2013-10-09)
[add] Use cdecimal instead of decimal if available
[add] When combining float and Decimal values, automatically convert float to Decimal
v0.2.0 (2013-07-23)
[add] New mod filter
v0.1.3 (2012-12-04)
[add] Support for Decimal type
v0.1.2 (2012-10-09)
[add] Initial version
License
MIT License, see LICENSE file.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.