您可以创建您的自定义jinja2 过滤器。
为了更有条理,您可以为所有自定义 jinja2 过滤器指定一个单独的文件 filters.py,就像 forms.py 或 models.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