PythonFlask-WTF文件上传教程
Python Flask-WTF 是一个在 Flask 中使用 WTForms 的库,它简化了在 Flask 应用中使用表单的过程。本教程将介绍如何使用 Flask-WTF 实现文件上传功能,并提供一个完整的使用例子。
## 安装 Flask-WTF
首先,我们需要安装 Flask-WTF。可以使用 pip 命令进行安装:
pip install Flask-WTF
## 创建 Flask 应用
接下来,我们需要创建一个 Flask 应用。创建一个名为 app.py 的文件,并输入以下内容:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import FileField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
class FileUploadForm(FlaskForm):
file = FileField('文件')
submit = SubmitField('上传')
@app.route('/', methods=['GET', 'POST'])
def upload_file():
form = FileUploadForm()
if form.validate_on_submit():
f = form.file.data
f.save(f.filename)
return '文件上传成功'
return render_template('upload.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
在上述代码中,我们首先导入 Flask 和相关依赖。然后,我们创建一个 Flask 应用并设置一个密钥,用于 CSRF 保护。
接下来,我们定义了一个名为 FileUploadForm 的表单,它包含一个文件字段和一个提交按钮。然后,我们在 upload_file 视图函数中创建了一个表单实例。
在视图函数中,我们首先检查表单是否通过验证。如果是,我们可以通过 form.file.data 获取到上传的文件对象,然后可以使用 save 方法保存文件到指定的路径。
最后,我们使用 render_template 方法渲染一个名为 upload.html 的模板,并将表单对象传入模板。
## 创建模板文件
接下来,我们需要创建一个名为 upload.html 的模板文件,并输入以下内容:
<!DOCTYPE html>
<html>
<head>
<title>文件上传示例</title>
</head>
<body>
<h1>文件上传示例</h1>
<form action="" method="POST" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.file.label }} {{ form.file }}
<br>
{{ form.submit }}
</form>
</body>
</html>
在上述模板中,我们首先设置标题和一个标题标签。然后,我们创建一个包含文件字段和提交按钮的表单。
注意,我们使用了 enctype="multipart/form-data" 来设置表单的编码类型,以支持文件上传。在表单中,我们使用了 WTForms 提供的 {{ form.csrf_token }} 来添加 CSRF 保护。
## 运行应用
最后,我们可以运行我们的 Flask 应用,通过访问 http://localhost:5000 来使用文件上传功能。
在网页上,我们可以选择一个文件并点击“上传”按钮来上传文件。如果文件上传成功,将会显示“文件上传成功”。
注意,我们在 app.run(debug=True) 中设置了 debug 参数为 True,这将会启用调试模式,以便于我们在开发过程中进行调试。
## 总结
本教程介绍了如何使用 Flask-WTF 实现文件上传功能,并提供了一个完整的使用例子。通过 Flask-WTF,我们可以轻松地在 Flask 应用中使用表单,并处理文件上传操作。
希望这个教程能对你有所帮助,祝你学习愉快!
