【问题标题】:How to set the default float format for Jinja in Flask?如何在 Flask 中为 Jinja 设置默认的浮点格式?
【发布时间】:2012-12-23 14:00:36
【问题描述】:
我在 Flask 中使用 Jinja,我希望在我的所有 html 页面中默认使所有浮动看起来像 123.45,而不是在小数点后保留太多数字。我不想在模板文件中一一格式化每个浮点数。我该怎么做?
【问题讨论】:
-
-
-
查看 Jinja 代码,我不确定这是否可行 - 您可以使用 round 过滤器,但这是每个浮点数的另一个更改。我只能建议写一个custom filter,它的作用类似于return "%.2f" % (value,)。
标签:
python
format
flask
jinja2
【解决方案1】:
您可以使用context processor为此创建自定义过滤器。
我有烧瓶官方文档的副本来解决这个问题。
@app.context_processor
def utility_processor():
def format_price(amount):
return u'{0:.2f}{1}'.format(amount)
return dict(format_price=format_price)
您可以使用此过滤器传递所有值
{{ format_price(0.33) }}
希望能回答。
【解决方案2】:
你也可以考虑使用十进制模块:
http://docs.python.org/2/library/decimal.html
这是从上述文档中摘录的一个简单示例:
>>> from decimal import *
>>> getcontext().prec = 2
>>> rounded_num = Decimal(1) / Decimal(7)
>>> rounded_num
Decimal('0.14')
通过使用此模块,您应用程序中的所有浮点数都将很好地转换为小数点后两位数。