目录
安装:
pip install flask-wtf
-
创建表单
from flask_wtf import FlaskForm # 表单基类 from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, Length, EqualTo, Email app = Flask(__name__) app.config['SECRET_KEY'] = 'SECRET_KEY' maanger = Manager(app) # 表单注册类 class Register(FlaskForm): username = StringField('⽤户名', validators=[DataRequired('请输名'), Length(min=6, max=12, message='名范围在6~12位之间')]) userpass = PasswordField('密码', validators=[DataRequired('请输密码'), Length(min=6, max=12, message='密码范围在6~12位之间')]) confirm = PasswordField('确认密码', validators=[DataRequired('确认密码'), EqualTo('userpass', message='密码和确认密码不一致')]) email = StringField('邮箱', validators=[DataRequired('请输邮箱地址'), Email(message='请输正确的邮箱')]) submit = SubmitField('注册')
-
添加视图函数
# 注册 @app.route('/register/', methods=['GET', 'POST']) def register(): form = Register() # 实例化表单类 # 这个⽅法是实现表单校验功能的 csrf,数据正确性 都通过了 则为真 否则为假 if form.validate_on_submit(): # print(request.form) print(form.username) # 拿到username的整个标签 print(form.username.data) # 取出username⾥⾯的value值 return '数据提交过来了' return render_template('register.html', form=form)
-
渲染表单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>flask-wtf的表单类</h2> <form action="{{ url_for('register') }}" method="post"> {# csrf #} {{ form.csrf_token }} {{ form.username.label }} {{ form.username(style="color:red;",class='myself',placeholder='请输 ⼊⽤户名...') }} #给当前的标签添加属性和值 关键字参数 #循环迭代取出验证失败的错误信息(也就是你在验证器⾥的属性message的 值) {% for error in form.username.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.userpass.label }} {{ form.userpass }} {% for error in form.userpass.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.confirm.label }} {{ form.confirm() }} {% for error in form.confirm.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.email.label }} {{ form.email() }} {% for error in form.email.errors %} <span style="color:red;">{{ error }}</span> {% endfor %} <br> {{ form.submit() }} </form> </body> </html>
-
字段类型
-
验证器