如何在django模板中格式化浮点值?

如何在django模板中格式化浮点值?,django,django-templates,Django,Django Templates,我想在django模板中格式化浮点值,如下所示: 125000=>125k 125000000=>125M 我是否必须为此使用任何自定义模板标记,或者django已经有了一个 有什么想法吗?是内置模板标签和过滤器的列表,因此如果没有,您必须构建自己的模板标签和过滤器 您将在中找到与所需内容类似的内容,并以此为基础构建您自己的过滤器。您可以通过以下过滤器模板标记使用: @register.filter def format_number(num): num = int(num) m

我想在django模板中格式化浮点值,如下所示:

125000
=>
125k

125000000
=>
125M

我是否必须为此使用任何
自定义模板标记
,或者django已经有了一个

有什么想法吗?

是内置模板标签和过滤器的列表,因此如果没有,您必须构建自己的模板标签和过滤器


您将在中找到与所需内容类似的内容,并以此为基础构建您自己的过滤器。

您可以通过以下过滤器模板标记使用:

@register.filter
def format_number(num):
    num = int(num)
    magnitude = 0
    while abs(num) >= 1000:
        magnitude += 1
        num /= 1000.0
    return '%.2f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])

print(format_number(32413423)) # 32.41M
它将支持
p

我使用以下链接创建了代码:

看看,可能不完全是您需要的,但这会让您了解如何编写自己的筛选器。复制粘贴他人代码/答案时,请阅读评论并告知他人潜在错误,或链接原始答案立即获取此错误
abs的错误操作数类型():“SafeText”
@NiladryKar我想您可能是在以字符串形式传递参数。您可以在函数中将其转换为int以工作。e、 g:num=int(num)//将此行添加到格式\u编号定义后的第一行function@NiladryKar我已经在我的帖子中添加了这一行,实际上我正试图为浮点值做这件事……上面的解决方案是针对
int
value。它使用
float(num)