Python Flask Jinja模板-将字符串格式化为货币

Python Flask Jinja模板-将字符串格式化为货币,python,flask,Python,Flask,有没有一种方法可以将一个字符串格式化为烧瓶模板中的货币(USD) 例如: mystring=“10000” 我想要的结果是:mynewstring=“$10000.00”您可以在代码中使用区域设置进行转换 @app.template_filter('conv_curr') def conv_curr(amount): import locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') return locale.curren

有没有一种方法可以将一个字符串格式化为烧瓶模板中的货币(USD)

例如: mystring=“10000”


我想要的结果是:
mynewstring=“$10000.00”

您可以在代码中使用区域设置进行转换

@app.template_filter('conv_curr')
def conv_curr(amount): 
  import locale 
  locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
  return locale.currency(amount)
然后使用过滤器

{{ 10000|conv_curr }}

Jinja2提供了一种格式化传递给模板的值的方法。这称为自定义模板过滤

要从数字字符串在模板中显示货币格式,请执行以下操作:

  • 在Flask应用程序中创建自定义过滤器
  • 在模板中调用筛选器。有关自定义筛选器的详细信息,请参阅
您可以使用字符串格式将字符串或区域设置格式化为@Blitzer的答案。 由于@Blitzer已经提供了
locale
用法,我正在自定义过滤器中添加字符串格式

app.py

from flask import Flask, render_template
app = Flask(__name__)

@app.template_filter()
def currencyFormat(value):
    value = float(value)
    return "${:,.2f}".format(value)

@app.route('/')
def home():
    data = "10000"
    return render_template("currency.html", data=data)

app.run(debug=True)
currency.html

<html>
    <head>
        <title>Locale Example</title>
    </head>
    <body>
        <h3>Locale Example</h3>
        {% if data %}
            <div>{{ data | currencyFormat }}</div>            
        {% endif %}
    </body>
</html>

区域设置示例
区域设置示例
{%if数据%}
{{data | currencyFormat}}
{%endif%}
输出:


能否在烧瓶模板内使用区域设置?使用过滤器定义编辑。关于如何定义和调用过滤器的详细信息,可以在这里阅读非常好的答案。我甚至不知道模板过滤是一件事。(尽管我确信它在文档中)。