如何使用WTForms接受点和逗号作为小数分隔符?

kra*_*r65 5 python decimal wtforms

我正在使用WTForms来显示和验证表单输入.我使用a DecimalField作为金额输入,当插入带点作为小数分隔符的值时,它可以正常工作.由于这个网站将在欧洲大陆使用,我想让逗号作为小数分隔符.这意味着,这两个 "2.5"和"2,5"应导致的值,意思是"两半".

当我用逗号输入值时,我收到错误说'Not a valid decimal value'.如何使用WTForms接受点和逗号作为十进制分隔符?


我知道我可以使用Babel来使用基于区域设置的数字格式,但我不希望这样.我特别想接受点和逗号作为分隔符值.

Dan*_*son 6

DecimalField在处理数据之前,您可以使用句点对逗号进行子类化和替换:

class FlexibleDecimalField(fields.DecimalField):

    def process_formdata(self, valuelist):
        if valuelist:
            valuelist[0] = valuelist[0].replace(",", ".")
        return super(FlexibleDecimalField, self).process_formdata(valuelist)
Run Code Online (Sandbox Code Playgroud)