WTForms无法验证NumberRange

s

我正在制作一个以十进制作为输入的WTForm,并且试图将输入限制为一定范围的数字(0到10之间)。但是,验证器NumberRange似乎什么也没做。

Python(使用烧瓶):

from flask import render_template
from flask_wtf import FlaskForm
from wtforms import DecimalField, SubmitField, validators

class NumberForm(FlaskForm):
    question = DecimalField('Question 1',
                            [validators.NumberRange(min=0, max=10, message="blah"),
                             validators.Optional()])
    submit = SubmitField('Submit')

@app.route('some_route/', methods=['GET', 'POST])
def page():
    form = NumberForm()
    if form.validate_on_submit():
        return some_success_or_other
    return render_template('page.html', form=form)

HTML:

<form method="POST">
  <div class="form-group-row">
    {{ form.hidden_tag() }}
    {{ form.question.label }}
    <div>
      {{ form.question }}
    </div>
  </div>
  <div class="form-group-row">
    {{ form.submit }}
  </div>
</form>

question无论我输入什么值,都将提交字段。我认为它不允许文本,也不允许负数,也不允许范围之外的数字(例如10000)。

我尝试将NumberRangemin和max更改0.010.0我试过取出消息参数。我尝试取出Optional验证器。但是这些都不能阻止我输入表格中超出范围的数字。

(当我更换Optional使用DataRequired,表单不会提交,除非是外地的数据,使验证工作至少)。

有人知道我在做什么错吗?


编辑:看来问题被分为两部分:无验证,验证消息不闪烁。下面的答案解决了缺乏验证的问题。

托宾

显然您的应用程序配置不正确。该代码应如下所示:

from flask_wtf import FlaskForm
from wtforms import SubmitField, DecimalField
from wtforms.validators import NumberRange

class NumberForm(FlaskForm):
    question = DecimalField('Question 1', validators=[NumberRange(min=0, max=10, message='bla')])
    submit = SubmitField('Submit')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章