我要的其实很简单。我想创建一个包含一些字段和提交和取消按钮的表单。我想使用flaskbootstrap的quick_form
模板函数来降低模板的开销。我的表格如下:
from flask_wtf import FlaskForm
from wtforms.validators import Required, Length
class SequenceForm(FlaskForm):
name = StringField('Name:', validators=[Required(), Length(1, 128)])
# some other fields here
submit = SubmitField('submit')
cancel = SubmitField('cancel')
模板:
^{pr2}$有人会怀疑我想验证并接受submit上的输入值,跳过cancel上的验证。所以我的视图函数看起来和预期的一样。在
@main.route('sequence/', methods=['GET', 'POST'])
def sequence():
form = SequenceForm()
if request.method == 'POST':
if 'submit' in request.form:
if form.validate_on_submit():
print(form.duration.data)
else:
return redirect(url_for('main.index'))
return render_template('sequence.html', form=form)
现在,如果按下取消,逻辑上应该没有验证,并且应该进行重定向。但是,我遇到了这样一个问题:由于客户端验证,如果我按submit或cancel,我的view函数甚至都不会被调用。在
<input class="form-control" id="name" name="name" required="" type="text" value="">
有没有方法可以禁用WTForms上的客户端验证?在
您可以禁止呈现
required
属性。在对于Python2,添加如下参数:
super(MyTextInput, self)
然后:
^{pr2}$Required验证器以及替换
Required
的DataRequired和{a3}设置了字段的replace标志。此标志用于将required属性添加到字段的HTML表示中。我的解决方法是手动创建验证函数。在这种方式在客户端没有验证,并且确保在每次submit或cancel时都调用view函数。在
注意
更简单的解决方案是将
^{pr2}$InputRequired
验证器的子类化并覆盖field\u标志字典。在要禁用客户端表单验证,请将“novalidate”属性添加到模板中的HTML
<form>
元素:<form method="POST" novalidate>
相关问题 更多 >
编程相关推荐