问题描述
我想在 Django 模板中将数字四舍五入到最接近的 1000。
就像是
{{ 123456 | round(1000) }}
123000
在 Django 中是否有内置的方法可以做到这一点,还是我应该编写一个自定义模板标签?
1楼
我 的找不到这样的功能。 最接近的是但我们只能四舍五入到一个整数(而不是千位等)。
然而,编写自定义模板过滤器并不难:
# app/templatetags/rounding.py
from django import template
from decimal import Decimal
register = template.Library()
@register.filter
def round_down(value, size=1):
size = Decimal(size)
return (Decimal(value)//size) * size
或者如果您打算只使用整数:
@register.filter
def round_down(value, size=1):
size = int(size)
return (value//size) * size
然后我们可以格式化它:
{% load rounding %}
{{ 123456|round_down:"1000" }}
然后生成:
>>> t = """{% load rounding %}{{ 123456|round_down:"1000" }}"""
>>> Template(t).render(Context())
'123000'