📅  最后修改于: 2023-12-03 15:38:50.234000             🧑  作者: Mango
在Flask中,我们可以使用WTForms来创建Web表单。使用WTForms的好处是,它可以提供表单验证,安全性,数据序列化,模板渲染等功能。在这篇文章中,我们将讨论如何检查在flask wtf中单击了哪个提交按钮。
首先,我们需要定义一个表单类来创建表单。在这里,我们将创建一个注册表单,其中包含两个提交按钮:register
和cancel
。
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
class RegisterForm(FlaskForm):
username = StringField('Username')
email = StringField('Email')
password = PasswordField('Password')
confirm_password = PasswordField('Confirm Password')
register = SubmitField('Register')
cancel = SubmitField('Cancel')
接下来,我们需要定义视图函数来处理表单。在这里,我们将使用request.method
和if form.validate_on_submit():
来检查表单的提交方式和表单的验证结果。如果提交方式是POST
,并且表单验证成功,我们可以使用request.form.get('register')
来检查哪个提交按钮被点击。
from flask import render_template, request
from app import app
from forms import RegisterForm
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm()
if request.method == 'POST' and form.validate_on_submit():
if request.form.get('register'):
# Register button clicked
# Code to handle registration
pass
elif request.form.get('cancel'):
# Cancel button clicked
# Code to redirect to home page or login page
pass
return render_template('register.html', form=form)
最后,我们需要在模板中呈现表单。我们可以使用WTForms中的form.hidden_tag()
函数生成用于CSRF保护的隐藏字段,并使用form.register()
和form.cancel()
来呈现提交按钮。
<form method="POST" action="/register">
{{ form.hidden_tag() }}
{{ form.username.label }} {{ form.username }}
{{ form.email.label }} {{ form.email }}
{{ form.password.label }} {{ form.password }}
{{ form.confirm_password.label }} {{ form.confirm_password }}
{{ form.register }}
{{ form.cancel }}
</form>
在这篇文章中,我们学习了如何检查在flask wtf中单击了哪个提交按钮。我们首先定义了一个表单类,然后定义了一个视图函数来处理表单。最后,在模板中呈现表单。