本文介绍了在Flask中使用WTForms和Flask-WTF扩展库进行表单验证的方法。首先,需要安装flask-wtf和wtforms库。然后,通过定义一个基于FlaskForm的RegisterForm类,使用WTForms的字段和验证器来创建表单。在Flask应用中,通过validate_on_submit方法验证表单提交的数据。最后,创建了一个register.html模板文件,用于展示和交互表单数据。
表单需要安装flask-wtf、wtforms库,可以使用清华源来加速安装过程。
pip install flask-wtf wtforms -i https://pypi.tuna.tsinghua.edu.cn/simple
首先写flask代码,基于FlaskForm
写一个RegisterForm表单类。validate_on_submit
是验证提交的内容都没有问题。
在使用Flask进行表单验证时,我们通常会使用 Flask-WTF 扩展库。在这个过程中,我们使用 WTForms 来定义表单类,并通过 validate_on_submit 方法来判断表单是否通过验证。
from flask import Flask, render_template, request
from wtforms import StringField, SubmitField, PasswordField
from flask_wtf import FlaskForm
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
# 跨域保护
app.config['SECRET_KEY'] = '123456'
# 定义表单模型类
class RegisterForm(FlaskForm):
username = StringField(label='用户名', validators=[DataRequired(message='用户名不能为空')])
password = PasswordField(label='密码', validators=[DataRequired(message='密码不能为空')])
repassword = PasswordField(label='确认密码', validators=[DataRequired(message='确认密码不能为空'), EqualTo('password', message='两次密码不一致')])
submit = SubmitField(label='提交')
@app.route('/register', methods=['GET', 'POST'])
def register():
form123 = RegisterForm()
if request.method == 'GET':
return render_template('register.html', form=form123) # 把表单实例传递给模板
if request.method == 'POST':
username = form123.username.data
password = form123.password.data
if form123.validate_on_submit():
# validate_on_submit # 验证表单数据是否合法
return '用户名:%s, 密码:%s' % (username, password)
else:
return '提交验证失败'
if __name__ == "__main__":
app.run()
在模板文件夹中,写一个register.html
文件,用于交互flask里的值:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body>
<form action="" method="post">
{{ form.username.label }}
{{ form.username }}<br>
{{ form.password.label }}
{{ form.password }}<br>
{{ form.repassword.label }}
{{ form.repassword }}<br>
{{ form.submit }}
</form>
</body>
</html>