【问题标题】:Flask WTForms Integerfield type is text instead of numberFlask WTForms Integerfield 类型是文本而不是数字
【发布时间】:2019-04-26 06:16:07
【问题描述】:

这是我尝试过的:

nrkomp = IntegerField('Number',validators=[NumberRange(min=1, max=5, message='Invalid length')])

在开发人员工具中,此表单输入的类型为文本而不是数字,我已阅读文档,但找不到解决此问题的方法。

【问题讨论】:

  • 您的代码似乎正确。请注意,它实际上是一个文本字段,其输入稍后会转换为整数。表单域的输入一般是文本。
  • 有没有办法让我把它的类型变成一个数字,还是我必须忍受这个?
  • 据我所知,所有此类字段(FloatField、IntegerField、DecimalField...)都是文本类型。在后端,它们的值被转换为相应的数字类型。如果不可能,则会引发错误。

标签: python flask wtforms


【解决方案1】:

您可以使用 wtforms html5 fields 获取 html5 输入类型,并使用 html5 widgets 作为其关联的小部件。

from wtforms import Form
from wtforms.fields import html5 as h5fields
from wtforms.widgets import html5 as h5widgets


class F(Form):

    n1 = h5fields.IntegerField("Number1")
    n2 = h5fields.IntegerField(
        "Number2", widget=h5widgets.NumberInput(min=0, max=100, step=10)
    )


for f in F():
    print(f)
<input id="n1" name="n1" step="1" type="number" value="">
<input id="n2" max="100" min="0" name="n2" step="10" type="number" value="">

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2021-10-03
    • 2020-05-02
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多