【问题标题】:How to format float values in django template?如何在 django 模板中格式化浮点值?
【发布时间】:2019-10-18 21:07:42
【问题描述】:

我想在我的 django 模板中像这样格式化浮点值:

125000 => 125k

125,000,000 => 125M

我必须为此使用任何 custom template tag 还是 django 已经有一个?

有什么想法吗?

【问题讨论】:

  • 看看django.contrib.humanize,可能不完全是你需要的,但这让你知道如何编写自己的过滤器。

标签: django django-templates


【解决方案1】:

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

@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

我使用此链接创建了代码: formatting long numbers as strings in python

【讨论】:

  • 复制粘贴其他人的代码/答案时,请阅读 cmets 并告知人们潜在的错误或链接原始答案
  • 现在出现这个错误bad operand type for abs(): 'SafeText'
  • @NiladryKar 我想也许您将参数作为字符串传递。你可以在你的函数中将它转换为 int 来工作。 eg: num = int(num) // 将此行添加到format_number函数定义后的第一行
  • @NiladryKar 我也将此行添加到我的帖子中
  • 实际上我正在尝试为浮点值执行此操作...上述解决方案适用于int 值。它使用float(num)
【解决方案2】:

This 是内置模板标签和过滤器的列表,因此如果不存在,您必须自己构建。

您会在django.contrib.humanize 中找到与您需要的内容相似的内容,以此为基础构建您自己的过滤器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2016-10-05
    • 2013-03-05
    • 2019-09-20
    • 2020-05-24
    相关资源
    最近更新 更多