📜  Flask WTF(1)

📅  最后修改于: 2023-12-03 15:30:47.127000             🧑  作者: Mango

Flask WTF: 简化表单处理的利器

介绍

Flask WTF是一个基于Flask的第三方库,旨在简化表单处理过程。它使用WTForms作为后端表单处理库,提供了许多方便的功能,如表单验证、CSRF保护等。由于WTForms本身相当灵活,因此Flask WTF同样也提供丰富的扩展功能,例如Flask-WTF、Flask-WTF-Recaptcha等等。

安装

你可以使用pip来安装Flask WTF:

pip install flask-wtf
示例

请注意,下面的示例仅为了说明Flask WTF的基本用法,具体应用请参考官方文档

首先,为了使用Flask WTF,您需要实例化一个Flask-WTF对象:

from flask import Flask
from flask_wtf import FlaskForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'my-secret-key'
wtf = FlaskForm(app)

接下来,您可以创建自己的表单继承自FlaskForm,并指定需要的字段:

from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email

class LoginForm(FlaskForm):
  email = StringField('Email', validators=[DataRequired(), Email()])
  password = PasswordField('Password', validators=[DataRequired()])
  submit = SubmitField('Login')

在您开发的视图函数中,您可以像下面这样渲染表单:

from flask import render_template, redirect, url_for

@app.route('/login', methods=['GET', 'POST'])
def login():
  form = LoginForm()
  if form.validate_on_submit():
    # 处理表单提交
    return redirect(url_for('index'))
  return render_template('login.html', form=form)

接下来是模板,稍稍的代码如下:

<form method="POST">
  {{ form.hidden_tag() }}
  {{ form.email.label }} {{ form.email }} {% if form.email.errors %}{{ form.email.errors }}{% endif %}
  {{ form.password.label }} {{ form.password }} {% if form.password.errors %}{{ form.password.errors }}{% endif %}
  {{ form.submit }}
</form>
结论

Flask WTF在表单处理方面提供了极大的便利,尤其是对于有经验的Flask开发者。通过它,您可以在不失灵活性的同时,有效地保护您的应用程序免受恶意攻击。如果您尚未使用Flask-WTF,我们强烈建议您尝试一下!