如何忽略 flask-wtf 中的字段验证?
How can I ignore a field validation in flask-wtf?
我有一个用于向我的数据库添加项目的表单,其中包含两个按钮:Cancel
和 Submit
。我遇到的问题是,当我用空表单按下 Cancel
按钮时,我收到 Please fill out this field.
错误,而不是返回到我的主页(请参阅 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')
views.py
:
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
事件)。
如果您仍希望 cancel
按钮成为 WTForms 字段,一种选择是覆盖表单中的 validate
方法并删除 DataRequired
上的验证器16=] 和 name
。以下内容未经测试,但可以为您提供一个工作起点。
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
我有一个用于向我的数据库添加项目的表单,其中包含两个按钮:Cancel
和 Submit
。我遇到的问题是,当我用空表单按下 Cancel
按钮时,我收到 Please fill out this field.
错误,而不是返回到我的主页(请参阅 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')
views.py
:
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
事件)。
如果您仍希望 cancel
按钮成为 WTForms 字段,一种选择是覆盖表单中的 validate
方法并删除 DataRequired
上的验证器16=] 和 name
。以下内容未经测试,但可以为您提供一个工作起点。
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