我如何可以忽略flask wtf中的现场验证?
我有一个表单可以向我的数据库中添加一个项目,它包括两个按钮:我如何可以忽略flask wtf中的现场验证?,flask,wtforms,flask-wtforms,Flask,Wtforms,Flask Wtforms,我有一个表单可以向我的数据库中添加一个项目,它包括两个按钮:Cancel和Submit。我遇到的问题是,当我用空表单按下Cancel按钮时,我得到一个请填写此字段。错误,而不是返回到我的主页(有关逻辑,请参阅views.py)。那么,当我按下Cancel按钮时,如何让我的应用程序忽略DataRequired验证器呢 forms.py: class ItemForm(FlaskForm): id = StringField('id', validators=[DataRequired()]
Cancel
和Submit
。我遇到的问题是,当我用空表单按下Cancel
按钮时,我得到一个请填写此字段。
错误,而不是返回到我的主页(有关逻辑,请参阅views.py
)。那么,当我按下Cancel
按钮时,如何让我的应用程序忽略DataRequired
验证器呢
forms.py
:
class ItemForm(FlaskForm):
id = StringField('id', validators=[DataRequired()]
name = StringField('Name', validators=[DataRequired()]
cancel = SubmitField('Cancel')
submit = SubmitField('Submit')
def add_item()
form = ItemForm()
if form.validate_on_submit():
if form.submit.data:
# Code to add item to db, removed for brevity.
elif form.cancel.data:
flash('Add operation cancelled')
return redirect(url_for('home.homepage'))
views.py
:
class ItemForm(FlaskForm):
id = StringField('id', validators=[DataRequired()]
name = StringField('Name', validators=[DataRequired()]
cancel = SubmitField('Cancel')
submit = SubmitField('Submit')
def add_item()
form = ItemForm()
if form.validate_on_submit():
if form.submit.data:
# Code to add item to db, removed for brevity.
elif form.cancel.data:
flash('Add operation cancelled')
return redirect(url_for('home.homepage'))
“取消”按钮实际上不需要是“提交”按钮。您只需使用一个普通按钮即可将用户带回主页(使用
href
或捕获onclick
事件)
如果您仍然希望取消
按钮成为WTForms字段,一个选项是覆盖表单中的验证
方法,并删除id
和名称
上所需的数据
验证器。以下内容未经测试,但可能会为您提供一个工作起点
class ItemForm(FlaskForm):
id = StringField('id')
name = StringField('Name')
cancel = SubmitField('Cancel')
submit = SubmitField('Submit')
def validate(self):
rv = Form.validate(self)
if not rv:
return False
if self.cancel.data
return True
if self.id.data is None or self.name.data is None:
return False
return True
一种更简单、我认为更正确的方法是在模板中添加
formnovalidate=True
。例如{{form.delete_按钮(class_=“…”,formnovalidate=True)}
。