将 Floatformat 添加到 Django 自定义标记

Adding a Floatformat to Django Custom Tag

我正在使用 Django 1.8.3 和 Python 3.4.3

我有一个自定义标签,它获取两个对象的值,将一个对象分成另一个对象并呈现总数。我这样做是因为被划分的两个对象是许多字段的总和,所以我需要做最后的总计计算。

我需要帮助的是,一旦将两个值相互分开,浮点数最多呈现小数点后 15 位数字,我尝试使用 |floatformat,但它似乎没有在标签上工作。我找了又找答案,但我似乎找不到可能就在我面前的东西:)

一切正常,我只想将最终值格式化为小数点后两位。下面是我的代码。

simple_tag.py

from django import template

register = template.Library()


@register.simple_tag()
def average(num1, num2):
    return float(num1 / num2)

traffic.html(我的模板)

{% if traffic_list %}
<tr>
    <th>Monday</th>
    <td>{{ total_sales.Monday }}</td>
    <td>{{ total_campaigns.Monday }}</td>
    <td>{{ total_ifs_signups.Monday }}</td>
    <td>{{ total_traffic.Monday }}</td>
    <td>{% average total_traffic.Monday total_sales.Monday %}</td>
</tr>
...

上述标签的结果值

30.345407503234153

我想要渲染

30.36

再次感谢您的帮助。

计算平均值时,您必须:

@register.simple_tag()
def average(num1, num2):
    a = float(num1 / num2)
    # if you want you can round it too
    # a = round(float(num1/num2))
    return format(a, '.2f')

标签定义中的浮点数可以四舍五入:

@register.simple_tag()
def average(num1, num2):
   return round(float(num1 / num2), 2)

或者您可以像这样使用 floatformat 过滤器:

{% average total_traffic.Monday total_sales.Monday as result %}
 <td>{{result|floatformat:2}}</td>