Python Flask WTForms FloatField 允许 1,0 和 1.0 允许逗号和点
Python Flask WTForms FloatField allow 1,0 and 1.0 allow comma and dot
我有一个 flask 应用程序,用户可以在其中提交房间。在我的 WTForms 中有一个价格字段是 FloatField:
preis = FloatField('Preis p.P.', validators=[Optional()])
如果输入正确(带点),则可以正常工作,例如:
1.00
但是如果使用逗号会触发错误,例如:
1,00
我的想法是在我的 main.py 中捕获这个,但问题是来自 WTForms 的默认错误消息首先触发:
我尝试将浮点数转换为字符串,检查 ,
是否在此字符串中并使用简单的 replace(",",".")
然后转换回浮点数。
另一个问题,如何将此默认 Not a valid float value
消息更改为自定义消息?
谢谢!
您可以继承 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'))
您还可以在此处更改错误消息。
我有一个 flask 应用程序,用户可以在其中提交房间。在我的 WTForms 中有一个价格字段是 FloatField:
preis = FloatField('Preis p.P.', validators=[Optional()])
如果输入正确(带点),则可以正常工作,例如:
1.00
但是如果使用逗号会触发错误,例如:
1,00
我的想法是在我的 main.py 中捕获这个,但问题是来自 WTForms 的默认错误消息首先触发:
我尝试将浮点数转换为字符串,检查 ,
是否在此字符串中并使用简单的 replace(",",".")
然后转换回浮点数。
另一个问题,如何将此默认 Not a valid float value
消息更改为自定义消息?
谢谢!
您可以继承 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'))
您还可以在此处更改错误消息。