在上一篇教程中,我们讨论了如何使用 Flask-WTF 创建表单类,这为我们之后处理表单提交的数据奠定了基础。在本篇中,我们将深入探讨如何接收和处理提交的表单内容。这是构建 Web 应用程序的重要组成部分,因为用户输入往往是应用程序的核心。
接收表单数据
在 Flask 中,当用户提交表单时,数据会通过 HTTP POST 请求发送到服务器。我们可以在视图函数中通过 request
对象来接收这些数据。首先,我们需要导入 Flask 和相关模块:
1 2 3 4
| from flask import Flask, render_template, request, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired
|
然后,我们可以定义一个简单的 Flask 应用程序和表单类:
1 2 3 4 5 6
| app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key'
class MyForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) submit = SubmitField('Submit')
|
接下来,我们添加一个视图函数来处理表单显示和提交逻辑:
1 2 3 4 5 6 7
| @app.route('/form', methods=['GET', 'POST']) def form(): form = MyForm() if form.validate_on_submit(): username = form.username.data return redirect(url_for('success', username=username)) return render_template('form.html', form=form)
|
在上面的代码中,当表单被提交并通过验证后,我们可以使用 form.username.data
获取表单中的用户名。
处理表单内容
在实际应用中,处理表单内容通常涉及将数据存储到数据库中、发送邮件、或执行其他逻辑。在我们的案例中,我们简单地将用户名重定向到一个成功页面。
我们需要一个成功视图来显示处理后的结果:
1 2 3
| @app.route('/success/<username>') def success(username): return f'Hello, {username}! Your form has been submitted successfully.'
|
表单页面模板
为了完整地运行这个例子,我们需要一个简单的 HTML 模板来呈现我们的表单。创建一个 form.html
文件,并添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Flask Form</title> </head> <body> <h1>Input your username</h1> <form method="POST"> {{ form.hidden_tag() }} <p> {{ form.username.label }}<br> {{ form.username(size=32) }}<br> {% for error in form.username.errors %} <span style="color: red;">[{{ error }}]</span> {% endfor %} </p> <p>{{ form.submit() }}</p> </form> </body> </html>
|
在这个模板中,我们使用了 Jinja2 模板引擎来渲染表单。{{ form.hidden_tag() }}
用于生成 CSRF 保护。表单提交后,用户将在成功页面看到他们输入的用户名。
总结
在本节中,我们学习了如何处理 Flask 表单提交的内容。通过在视图函数中接收表单数据、进行简单的处理,并将结果反馈给用户,我们搭建了一个基础的表单处理流程。在下一篇教程中,我们将聚焦于表单验证,以确保用户输入的数据有效和安全。这样,我们的应用将更加健壮和可靠。
保持关注,下一篇将深入讨论如何使用 Flask-WTF 进行表单验证!