【问题标题】:Python Flask WTForms FloatField allow 1,0 and 1.0 allow comma and dotPython Flask WTForms FloatField 允许 1,0 和 1.0 允许逗号和点
【发布时间】:2017-01-18 11:38:47
【问题描述】:

我有一个烧瓶应用程序,用户可以在其中提交房间。在我的 WTForms 中有一个价格字段是 FloatField:

preis = FloatField('Preis p.P.', validators=[Optional()])

如果输入正确(带点),它可以正常工作,例如:

1.00

但是如果使用逗号则会触发错误,例如:

1,00

我的想法是在我的 main.py 中捕捉到这一点,但问题是来自 WTForms 的默认错误消息首先触发:

我尝试将浮点数转换为字符串,检查, 是否在此字符串中并使用简单的replace(",","."),然后再转换回浮点数。


另一个问题,如何将这个默认的Not a valid float value 消息更改为自定义消息?

谢谢!

【问题讨论】:

  • 更改机器的区域设置后会发生什么?尝试将其设置为西班牙语言环境。现在它可能适用于逗号(但不适用于句号)

标签: python flask wtforms


【解决方案1】:

您可以继承 FloatField 并将 replace 函数添加到其 process_formdata() 函数中。

class MyFloatField(FloatField):
    def process_formdata(self, valuelist):
        if valuelist:
            try:
                self.data = float(valuelist[0].replace(',', '.'))
            except ValueError:
                self.data = None
                raise ValueError(self.gettext('Not a valid float value'))

您还可以在此处更改错误消息。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多