Flask-WTF 是一个 Flask 扩展,用于简化在 Flask 应用中处理 Web 表单的过程。它是基于 WTForms 库的一个封装,提供了一种方便的方式来创建和验证表单。

以下是一个简单的例子,演示如何在 Flask 中使用 Flask-WTF 创建一个简单的表单:

首先,你需要安装 Flask-WTF:
pip install Flask-WTF

然后,你可以使用以下代码创建一个简单的 Flask 应用,并在其中使用 Flask-WTF:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

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

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()

    if form.validate_on_submit():
        # 处理表单提交的逻辑,这里简单地打印名字
        name = form.name.data
        print(f'Name: {name}')

    return render_template('index.html', form=form)

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

在这个例子中,我们定义了一个简单的表单 MyForm,其中包含一个文本字段(StringField)用于输入名字,和一个提交按钮(SubmitField)。我们还定义了一个 index 路由来渲染表单并处理表单提交。

在模板文件 index.html 中,你可以使用 Jinja2 模板引擎来渲染表单,以及显示验证错误:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask WTF Example</title>
</head>
<body>
    <h1>Flask WTF Example</h1>

    <form method="post" action="/">
        {{ form.hidden_tag() }}

        <label for="name">Name:</label>
        {{ form.name.label }}
        {{ form.name }}
        {% if form.name.errors %}
            <span style="color: red;">{{ form.name.errors[0] }}</span>
        {% endif %}

        <br>

        {{ form.submit() }}
    </form>
</body>
</html>

在模板中,我们使用 {{ form.hidden_tag() }} 来包含 Flask-WTF 表单中的隐藏字段。然后,我们使用 {{ form.name.label }} 和 {{ form.name }} 来渲染表单中的字段和标签。在错误处理部分,我们使用 {{ form.name.errors }} 来获取验证错误(如果有)。

这只是一个简单的例子,Flask-WTF 可以处理更复杂的表单和验证逻辑。通过查阅 Flask-WTF 和 WTForms 的文档,你可以了解更多关于字段类型、验证器以及如何自定义表单的信息。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7315/Flask