【问题标题】:How to format negative currency numbers in Flask and jinja如何在 Flask 和 jinja 中格式化负货币数字
【发布时间】:2020-07-04 10:51:25
【问题描述】:

在 Flask/jinja 中,我正在尝试重新格式化一个数字

  {{ "${:,.2f}".format(row['total']) }}

它用于买卖股票,所以我希望将数字显示为买入 1000 美元,卖出 -1000 美元(如果我也可以将负数格式化为红色,则可以加分!)

上述格式的问题,正数为 1000 美元,负数为 -1000 美元

感谢任何帮助。

【问题讨论】:

    标签: python-3.x flask jinja2


    【解决方案1】:

    您可以创建您的自定义jinja2 过滤器。

    为了更有条理,您可以为所有自定义 jinja2 过滤器指定一个单独的文件 filters.py,就像 forms.pymodels.py 一样

    filters.py

    from numbers import Number
    from decimal import Decimal
    
    from jinja2 import Markup
    
    
    def format_currency(value):
        if not isinstance(value, (Number, Decimal)):
            raise TypeError("Value must be Number.")
        if value < 0:
            return Markup'<span style="color:red">- </span>' + format_currency(-value))
        return "${:,.2f}".format(value)
    

    在您实例化Flask 应用程序的主文件中,注册您自定义的jinja2 过滤器,例如

    from falsk import Flask, ...
    from .filters import format_currency
    
    ..
    app = Flask(__name__)
    
    app.jinja_env.filters['format_currency'] = format_currency
    
    ..
    

    在您的模板中

    <p>{{ 0 | format_currency }}</p>
    <p>{{ 1000 | format_currency }}</p>
    <p>{{ 1000.12654 | format_currency }}</p>
    <p>{{ -1000 | format_currency }}</p>
    <p>{{ 2151000 | format_currency }}</p>
    <p>{{ -2151000 | format_currency }}</p>
    

    这将输出:

    $0.00
    $1,000.00
    $1,000.13
    - $1,000.00
    $2,151,000.00
    - $2,151,000.00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2020-07-18
      • 2015-07-27
      • 2018-02-19
      相关资源
      最近更新 更多