Python 如何在德米尔菲尔德的高射炮上设置use_区域设置?

Python 如何在德米尔菲尔德的高射炮上设置use_区域设置?,python,flask,flask-wtforms,python-babel,Python,Flask,Flask Wtforms,Python Babel,我一直在尝试为wtform DecimalField设置“use_locale”参数,但似乎没有任何效果,而且几乎没有任何关于如何设置“use_locale”的示例。我查阅了巴贝尔和马尔菲尔德的文件,到目前为止什么都没有 以下是相关代码片段: init.py: from flask import Flask, request from config import Config from flask_babel import Babel, Locale app = Flask(__name__)

我一直在尝试为wtform DecimalField设置“use_locale”参数,但似乎没有任何效果,而且几乎没有任何关于如何设置“use_locale”的示例。我查阅了巴贝尔和马尔菲尔德的文件,到目前为止什么都没有

以下是相关代码片段:

init.py:

from flask import Flask, request
from config import Config
from flask_babel import Babel, Locale

app = Flask(__name__)
app.config.from_object(Config)

babel = Babel(app)
locale = Locale('pt', 'BR')
from flask_wtf import FlaskForm
from app import app, db, locale
from wtforms import StringField, BooleanField, SubmitField, TextAreaField, IntegerField, SelectField, DecimalField
from wtforms.validators import ValidationError, DataRequired, EqualTo, Length

class Alterar(FlaskForm):
     valor = DecimalField('ValorTotal', validators=[DataRequired(),Length(min = 1)], use_locale = True)
forms.py:

from flask import Flask, request
from config import Config
from flask_babel import Babel, Locale

app = Flask(__name__)
app.config.from_object(Config)

babel = Babel(app)
locale = Locale('pt', 'BR')
from flask_wtf import FlaskForm
from app import app, db, locale
from wtforms import StringField, BooleanField, SubmitField, TextAreaField, IntegerField, SelectField, DecimalField
from wtforms.validators import ValidationError, DataRequired, EqualTo, Length

class Alterar(FlaskForm):
     valor = DecimalField('ValorTotal', validators=[DataRequired(),Length(min = 1)], use_locale = True)
routes.py

from flask import render_template, flash, redirect, url_for, request
from app import app, db
from app.forms import Alterar
from app.models import Orders
@app.route('/v_info/<id_order>', methods=['GET, POST'])
    def v_info(id_order):
    table = db.session.query(Orders).filter(Orders.id_ord == id_order).first()
    form = Alterar(request.form, obj=table)
    return render_template('v_info.html', data = table, form = form)
我知道bool对象是不可下标的,但是,我应该在“use\u locale”参数中传递什么?文档中有关该类的详细信息:

class wtforms.fields.DecimalField(default field arguments, places=2, rounding=None, use_locale=False, number_format=None)[source]¶

    A text field which displays and coerces data of the decimal.Decimal type.

    Parameters

            places – How many decimal places to quantize the value to for display on form. If None, does not quantize value.

            rounding – How to round the value during quantize, for example decimal.ROUND_UP. If unset, uses the rounding value from the current thread’s context.

            use_locale – If True, use locale-based number formatting. Locale-based number formatting requires the ‘babel’ package.

            number_format – Optional number format for locale. If omitted, use the default decimal format for the locale.

如果您只想查看格式化的值,可以定义一个过滤器并将其应用于模板:

from babel.numbers import format_decimal

def FormatDecimal(value):
    return format_decimal(value, locale='de_DE')

jinja2.filters.FILTERS['FormatDecimal'] = FormatDecimal

{{ decimal_value | FormatDecimal }}
如果您想将其添加到输入字段,也许可以尝试使用(不确定是否有效):


我现在使用模板得到这个错误:y文件“c:\anaconda3\lib\site packages\babel\numbers.py”,第804行,在apply value=decimal.decimal(str(value))decimal.invalidooperation:[