📜  需要 wtf 表单 - Python (1)

📅  最后修改于: 2023-12-03 14:58:43.110000             🧑  作者: Mango

需要 WTF 表单 - Python

如果您需要构建可交互的 Web 表单,那么 Flask-WTF 扩展提供的表单功能将非常有用。WTF 表单提供了许多有用的特性,例如验证字段和跨站请求伪造保护。

安装

您可以使用以下命令使用 pip 安装 Flask-WTF:

pip install Flask-WTF
使用

要使用 Flask-WTF 扩展,您需要导入 Flask、Flask-WTF 和一些其他必要的 Python 模块。以下是一个简单的示例 Flask 应用程序,其中包含一个使用 WTF 表单的登录页面:

from flask import Flask, render_template, flash, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key_here'

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Log In')

@app.route('/', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        flash(f'Login requested for user {form.username.data}')
        return redirect(url_for('index'))
    return render_template('login.html', title='Log In', form=form)

@app.route('/index')
def index():
    return render_template('index.html', title='Home')

if __name__ == '__main__':
    app.run(debug=True)

该示例应用程序使用 Flask 的基本架构,并定义一个 LoginForm 类,该类继承自 FlaskForm。该类包含一个用户名字段、一个密码字段和一个提交按钮,以及一些验证函数。 login() 函数同时包含用于验证表单的逻辑,并通过 flash() 函数返回消息并重定向到主页。

验证器

WTF 表单提供了许多验证器,可以用于验证各种字段,如以下示例所示:

from wtforms.validators import DataRequired, Email, EqualTo, Length

class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')

这个示例定义了一个 RegistrationForm 类,其中包含了一个用户名字段、一个邮箱字段、一个密码字段、一个确认密码字段和一个提交按钮。 验证器用于验证这些字段在提交表单时输入的值是否正确。例如,DataRequired() 验证器用于确保字段不为空。

总结

有了 Flask-WTF 扩展,构建 Web 应用程序的表单变得非常容易。你只需要定义一个表单类、添加相应的表单字段和验证器、然后将表单和路由函数连接在一起即可。