flask + wtform + google storage

项目需要使用 flask 上传、下载文件到 google storage 上,

搜了一圈没有能直接结合 wtform 使用的插件,所以动手造了个轮子。

只实现了基本的上传,下载的功能,后续可能会完善预览、权限控制等功能。

安装和使用方法参见 README --> https://github.com/FingerLiu/...

flask-wtf-storage

extend flask-wtf to support saving data to google storage

Installation

pip install flask-wtf-storage

Usage

1 首先引入我们需要的头文件

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from flask_wtf_storage import (
    MultipleFileField, FileField, FileDisplayField, StorageForm
)

2 然后在 form 中定义上传文件要使用的 form 及字段
class RegistrationForm(StorageForm):

website = StringField('website')
single_file_example = FileField()
multi_files_example = MultipleFileField()
submit = SubmitField('OK')
这里,为了演示,我们使用了 FileField 和 MultipleFileField 两种类型的字段。

FileField 用来实现只能上传一个文件的 Input 框, MultipleFileField 用来实现能够选择多个文件的 Input 框。

3 然后在 view 中使用该 form 并传递给 template

@current_app.route('/register/', methods=['GET', 'POST'])
def register():

form = RegistrationForm()
if form.validate_on_submit():
    # 存到 datastore
    data = form.data
    data.pop('csrf_token')
    data.pop('password2')
    login(data)
    return redirect(url_for('profile.html'))
return render_template('register.html', form=form)
4 最后像使用普通的 wtform 一样在 template 中 render form 即可。

相关推荐