我正在制作一个以十进制作为输入的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)。
我尝试将NumberRange
min和max更改为0.0
和10.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] 删除。
我来说两句