wtforms.fieldsFileField()使用帮助:在Python中实现文件上传功能
发布时间:2024-01-13 11:17:30
wtforms是一个Python的表单库,可以用来快速构建HTML表单。其中的fields.FileField()是一个字段类,用于处理文件上传功能。
使用wtforms.fields.FileField()时,需要在视图函数中实例化一个wtforms.Form的子类,并将FileField作为其中一个字段。在模板中,可以使用render_kw参数来设置HTML元素的属性。
以下是一个使用wtforms.fields.FileField()实现文件上传功能的例子:
1. 创建一个名为forms.py的文件,用来定义表单类。
from wtforms import Form, FileField, SubmitField
class UploadForm(Form):
file = FileField('选择文件')
submit = SubmitField('上传')
2. 在视图函数中导入UploadForm类,并在GET请求时渲染上传表单,在POST请求时处理文件上传。
from flask import Flask, render_template, request
from forms import UploadForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
@app.route('/', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if request.method == 'POST' and form.validate():
file = form.file.data
# 处理文件上传逻辑
file.save('path/to/save/file')
return '文件上传成功!'
return render_template('upload.html', form=form)
if __name__ == '__main__':
app.run()
3. 创建一个名为upload.html的模板文件,用来渲染上传表单。
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<form method="POST" enctype="multipart/form-data">
{{ form.file.label }} {{ form.file }}
<br/>
{{ form.submit }}
</form>
</body>
</html>
在浏览器中访问http://localhost:5000/,即可看到一个文件上传表单。选择需要上传的文件,点击上传按钮后,文件将被保存到指定路径。
