资讯专栏INFORMATION COLUMN

flask + wtform + google storage

Cristic / 2668人阅读

摘要:项目需要使用上传下载文件到上,搜了一圈没有能直接结合使用的插件,所以动手造了个轮子。只实现了基本的上传,下载的功能,后续可能会完善预览权限控制等功能。然后在中使用该并传递给存到最后像使用普通的一样在中即可。

项目需要使用 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 即可。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40957.html

相关文章

  • 使用 Flask 和 AngularJS 构建博客 - 1

    摘要:注原文作者,原文地址为在这个教程中,我们将使用和构建一个博客。在开发期间,这将允许我们把它们运行在不同的端口例如和。现在我们将进入目录并使用运行这个脚本。示例创建一篇文章为了创建一篇文章,你需要发送一个请求给。 注:原文作者 John Kevin M. Basco,原文地址为 Building a blog using Flask and AngularJS Part 1 在...

    刘玉平 评论0 收藏0
  • 使用 Flask 和 AngularJS 构建博客 - 1

    摘要:注原文作者,原文地址为在这个教程中,我们将使用和构建一个博客。在开发期间,这将允许我们把它们运行在不同的端口例如和。现在我们将进入目录并使用运行这个脚本。示例创建一篇文章为了创建一篇文章,你需要发送一个请求给。 注:原文作者 John Kevin M. Basco,原文地址为 Building a blog using Flask and AngularJS Part 1 在...

    lavnFan 评论0 收藏0
  • Flask Web Development —— Web表单(上)

    摘要:每个表单域都可以连接到一个或多个是一个用于检查用户提交的输入是否合法的函数。表单域构造函数的第一个参数是一个,在渲染表单到时会使用。验证确保提交的表单域不为空。表单域验证都是直接从包中导入。表格展示了一组支持的标准表单域。 第二章中介绍的request对象公开了所有客户端发送的请求信息。特别是request.form可以访问POST请求提交的表单数据。 尽管Flask的request...

    CODING 评论0 收藏0
  • python大佬养成计划----flask应用(表单)

    摘要:特别是可以访问请求提交的表单数据。表单的代码生成和验证提交的表单数据就是两个很好的例子。优势扩展使得处理表单能获得更愉快的体验。设计了表单库来使可以更加简便地管理操作表单数据。 1. 为什么使用Flask-WTF? request对象公开了所有客户端发送的请求信息。特别是request.form可以访问POST请求提交的表单数据。 尽管Flask的request对象提供的支持足以处理w...

    alighters 评论0 收藏0
  • Flask-WTF进阶和WTForms扩展

    摘要:和都是很好用的插件,然而当它们结合到一起后,就不是那么美妙了。当然了写一个完整的扩展还是很麻烦的。可以看官方扩展的源码。。。 Flask-WTF和Flask-SQLAlchemy都是很好用的插件,然而当它们结合到一起后,就不是那么美妙了。 问题的提出 在models.py中定义了一个Article、Category和Tag类: class Article(db.Model): ...

    zone 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<