第5章:表单处理
5.1 Web表单的基本概念
Web表单是收集用户输入的一种方式。在Flask中,表单通常与HTML表单结合使用,并通过POST方法提交。
示例代码:HTML表单
<!-- templates/login.html -->
<form method="post" action="/login">
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Login">
</form>
5.2 Flask-WTF扩展的使用
Flask-WTF是一个集成了WTForms的Flask扩展,它简化了表单的处理和验证。
示例代码:安装Flask-WTF
pip install Flask-WTF
示例代码:创建表单类
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField
from wtforms.validators import InputRequired
class LoginForm(FlaskForm):
username = StringField('Username', validators=[InputRequired()])
password = PasswordField('Password', validators=[InputRequired()])
5.3 表单验证和错误处理
表单验证确保用户输入的数据符合预期格式。如果验证失败,可以显示错误信息。
示例代码:表单验证
from flask import render_template, flash, redirect, url_for
from forms import LoginForm
@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)
if __name__ == '__main__':
app.secret_key = 'your_secret_key' # 需要设置secret_key
在模板中显示错误信息:
示例代码:显示错误信息
{% for error in form.username.errors %}
<span style="color: red;">{{ error }}</span>
{% endfor %}
5.4 文件上传的处理
文件上传是Web表单的常见功能。Flask-WTF也支持文件上传,但需要配置一些额外的设置。
示例代码:创建支持文件上传的表单
from flask_wtf import FlaskForm
from wtforms import StringField, FileField
from wtforms.validators import InputRequired, FileAllowed
class UploadForm(FlaskForm):
avatar = FileField('Avatar', validators=[
InputRequired(),
FileAllowed(['jpg', 'png'], 'Images only!')
])
示例代码:处理文件上传
from flask import request
@app.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
file = request.files['avatar']
# 保存文件逻辑
return render_template('upload.html', form=form)
确保在配置文件中设置了MAX_CONTENT_LENGTH
以限制上传文件的大小。
5.5 总结
本章介绍了Web表单的基本概念,以及如何使用Flask-WTF扩展来处理表单验证和文件上传。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 《每天5分钟用Flask搭建一个管理系统》第5章:表单处理
发表评论 取消回复