Flask中Flask-WTF的使用
一.表单
Web 表单是 Web 应用程序的基本功能。它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。
在Flask中,为了处理web表单,我们可以使用 Flask-WTF 扩展,它封装了 WTForms,并且它有验证表单数据的功能。此外,request封装了HTTP请求内容,可以通过request.form来获取表单数据。在Flask中可以通过Flask-WTF扩展来实现表单.
1.Flask-WTF
作用:
<1>不需要再写前端的表单代码(表单域、表单标签、表单按钮).
<2>支持对表单数据的验证功能.
二. Flask-WTF的使用:
Flask-WTF的使用分为3个步骤:
创建表单类,实例化对象;
在模板中使用表单对象;
在视图函数中处理表单.
1.创建表单类(实现Web表单),实例化对象;
class Form(FlaskForm):
name = StringField(validators=[DataRequired()]) # 确定表单类型
pswd = PasswordField(validators=[DataRequired(), EqualTo('pswd2')])
pswd2 = PasswordField(validators=[DataRequired()])
submit = SubmitField('注册')
2.在模板中使用表单对象;
{#wtf扩展在模板页面的使用#}
{#1.声明一个表单域form #}
<form method="post">
{{ form.csrf_token }}
<p>用户名:{{ form.name }}</p>
<p>密码: {{ form.pswd }}</p>
<p>确认密码:{{ form.pswd2 }}</p>
<p>{{ form.submit }}</p>
</form>
3.在视图函数中处理表单.
@app.route('/', methods=['POST', 'GET'])
def index():
# 2. 实例化表单类对象并传入模板
form = Form()
# 调用验证器,表单提交时验证函数才被执行
# form.validate_on_submit()
# validate_on_submit不仅会调用表单验证,还会验证模板页面中是否设置csrf_token
print(form.validate_on_submit())
# from.validate_on_submit()==True有2个条件:<1>2次输入的值相同;<2>模板页面中设置了csrf_token。
if form.validate_on_submit(): # 调用验证函数且==True
# 3.模拟注册: 获取表单数据
name = form.name.data
pswd = form.pswd.data
pswd2 = form.pswd2.data
print(name, pswd, pswd2)
return render_template('demo12_wtf.html', form=form)
if __name__ == '__main__':
app.run()
导包及配置
from flask import Flask
from flask import render_template
# 导入wtf扩展包 ***
from flask_wtf import FlaskForm
# 导入wtf提供的表单字段
from wtforms import StringField
from wtforms import PasswordField
from wtforms import SubmitField
# 导入验证函数
from wtforms.validators import DataRequired
from wtforms.validators import EqualTo
"""
利用WTF扩展实现注册页面
"""
from config import DevelopmentConfig
app = Flask(__name__)
# wtf的使用必须配置SECRET_KEY,不然报错
app.config.from_object(DevelopmentConfig)
# wtf扩展:实现注册页面
# 用户名/密码/确认密码/提