【问题标题】:How to set the default float format for Jinja in Flask?如何在 Flask 中为 Jinja 设置默认的浮点格式?
【发布时间】:2012-12-23 14:00:36
【问题描述】:

我在 Flask 中使用 Jinja,我希望在我的所有 html 页面中默认使所有浮动看起来像 123.45,而不是在小数点后保留太多数字。我不想在模板文件中一一格式化每个浮点数。我该怎么做?

【问题讨论】:

  • 尝试将其转换为str()
  • 编辑:啊,你特别不想格式化每一个。对不起,忽略此评论。你看到了吗:stackoverflow.com/questions/11260155/…
  • 查看 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')
    

    通过使用此模块,您应用程序中的所有浮点数都将很好地转换为小数点后两位数。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2022-12-04
      • 2015-06-09
      • 2020-09-20
      相关资源
      最近更新 更多