Flask中Flask-WTF的使用

洪飞白
2023-12-01

                                                             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扩展:实现注册页面
# 用户名/密码/确认密码/提

 类似资料: