【发布时间】:2019-10-18 21:07:42
【问题描述】:
我想在我的 django 模板中像这样格式化浮点值:
125000 => 125k
125,000,000 => 125M
我必须为此使用任何 custom template tag 还是 django 已经有一个?
有什么想法吗?
【问题讨论】:
-
看看django.contrib.humanize,可能不完全是你需要的,但这让你知道如何编写自己的过滤器。
我想在我的 django 模板中像这样格式化浮点值:
125000 => 125k
125,000,000 => 125M
我必须为此使用任何 custom template tag 还是 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
我使用此链接创建了代码: formatting long numbers as strings in python
【讨论】:
bad operand type for abs(): 'SafeText'
int 值。它使用float(num)
This 是内置模板标签和过滤器的列表,因此如果不存在,您必须自己构建。
您会在django.contrib.humanize 中找到与您需要的内容相似的内容,以此为基础构建您自己的过滤器。
【讨论】: