当前位置:  开发笔记 > 编程语言 > 正文

Python Flask WTForms FloatField允许1,0和1.0允许逗号和点

如何解决《PythonFlaskWTFormsFloatField允许1,0和1.0允许逗号和点》经验,为你挑选了1个好方法。

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

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

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

1.00

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

1,00

我的想法是在main.py中捕获此错误,但问题是WTForms的默认错误消息首先触发:

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


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

谢谢!



1> MrLeeh..:

您可以继承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'))

在这里您还可以更改错误消息。

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有