将WTForm的DecimalField的输入转换为float?-Flask

时间:2017-08-26 13:38:29

标签: python-2.7 flask-wtforms

我在Flask应用程序中为WTFform的DecimalField提供的输入正在转换为字符串。我需要它是一个int或float才能执行任何操作 数学运算?

任何帮助将不胜感激。 TIA

1 个答案:

答案 0 :(得分:0)

wtforms.DecimalField产生一个decimal.Decimal实例。

>>> import wtforms
>>> from webob.multidict import MultiDict
>>> class F(wtforms.Form):
...     foo = wtforms.DecimalField()
... 
>>> f = F(formdata=MultiDict(foo=3.45))
>>> val = f.data['foo']
>>> val
Decimal('3.45000000000000017763568394002504646778106689453125')
>>> type(val)
<class 'decimal.Decimal'>

该对象可用于计算:

>>> val * 4
Decimal('13.80000000000000071054273576')
>>> val + 2
Decimal('5.450000000000000177635683940')

或可以使用相应的内置函数转换为float或int

>>> float(val)
3.45
>>> int(val)
3