涉及的flask扩展
flask-uploads flask的一个文件上传扩展, 提供了UploadSet这个概念
flask-wtf(中文) 很强大的表单的扩展
flask-bootstrap bootstrap的flask扩展, 结合模版使用, 此处用到quick_form功能
from flask import Flask, render_template
from flask_uploads import UploadSet, IMAGES, configure_uploads
from flask_wtf import Form
from wtforms import SubmitField
from flask_wtf.file import FileField, FileAllowed, FileRequired
from flask_bootstrap import Bootstrapapp = Flask(__name__)# 新建一个set用于设置文件类型、过滤等
set_mypic = UploadSet('mypic')  # mypic# 用于wtf.quick_form()模版渲染
bootstrap = Bootstrap(app)# mypic 的存储位置,
# UPLOADED_xxxxx_DEST, xxxxx部分就是定义的set的名称, mypi, 下同
app.config['UPLOADED_MYPIC_DEST'] = './static/img'# mypic 允许存储的类型, IMAGES为预设的 tuple('jpg jpe jpeg png gif svg bmp'.split())
app.config['UPLOADED_MYPIC_ALLOW'] = IMAGES# 把刚刚app设置的config注册到set_mypic
configure_uploads(app, set_mypic)app.config['SECRET_KEY'] = 'xxxxx'# 此处WTF的SCRF密码默认为和flask的SECRET_KEY一样
# app.config['WTF_CSRF_SECRET_KEY'] = 'wtf csrf secret key'class UploadForm(Form):'''一个简单的上传表单'''# 文件field设置为‘必须的’,过滤规则设置为‘set_mypic’upload = FileField('image', validators=[FileRequired(), FileAllowed(set_mypic, 'you can upload images only!')])submit = SubmitField('ok')@app.route('/', methods=('GET', 'POST'))
def index():form = UploadForm()url = Noneif form.validate_on_submit():filename = form.upload.data.filenameurl = set_mypic.save(form.upload.data, name=filename)return render_template('index.html', form=form, url=url)if __name__ == '__main__':app.run(debug=True)

html文件:

1 {% import "bootstrap/wtf.html" as wtf %}
2
3 {% block page_content %}
4     <h4>uploaded: {% if url %} {{url}}{% endif %}</h4>
5     {{ wtf.quick_form(form, enctype="multipart/form-data") }}
6 {% endblock page_content %}

转载于:https://www.cnblogs.com/himir/p/5940705.html

flask-uploads扩展的使用笔记相关推荐

  1. ES6基础3(扩展)-学习笔记

    文章目录 ES6基础3(扩展)-学习笔记 字符串扩展 数值扩展 函数扩展 扩展运算符 ES6基础3(扩展)-学习笔记 字符串扩展 //扩展//字符串扩展charAt(); //返回指定索引位置的字符 ...

  2. flask 框架第一天学习笔记

    Flask Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎 ...

  3. FLASK RESTFUL TOKEN用户验证笔记

    笔记1 REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码 ...

  4. Flask之扩展flask-migrate

    flask-migrate一个用来做数据迁移的falsk扩展,一般都是结合flask-sqlalchemy使用,在上一篇文章中我也介绍了这个扩展,需要的小伙伴可以看一下,后续我会将flask-sqla ...

  5. 学习 PHP SOAP 扩展的一些笔记

    对 SOAP 的相关学习就先告此一段落,这是最后一篇文章用来记录下学习过程中的一些笔记和心得. 前面三篇文章分别是: <SOAP 介绍> <SOAP Web 服务介绍> < ...

  6. flask 框架web开发视频笔记

    requirements文件 python 项目种必须包含一个requirements文件,用于记录所有依赖包以及其精确得版本号,以遍在新环境种进行部署操作. 在虚拟环境种使用以下命令将当前虚拟环境中 ...

  7. Flask的快速入门详细笔记

    Flask的框架结构对应关系及理解 1.简介 简单介绍下Flask是一个轻量级的web前端框架,不像django那样本身具备一套完整的页面体系,轻量级说明了完全可以自定义,从功能逻辑到业务处理,都可以 ...

  8. C# 动态语言扩展(学习笔记)

    1 概述: 在早期的.NET Framework中,"Var"关键字和匿名方法开启了C#走向动态的道路,在4.0中,动态类型被添加进去.尽管C#是一个静态类型的语言,但这些额外的添 ...

  9. Flask入门教程(视频教程笔记)

    初始化flask项目

最新文章

  1. MyBatis 一个简单配置搞定数据加密解密!
  2. centos7下安装gcc7
  3. 新建了一个英文Blog
  4. JSP简单练习-获取表单数据
  5. 欧拉函数的一道练习题(附加容斥做法)
  6. python怎么打不开图片_为什么pygame打不开图片 各种格式的都试过了
  7. R开发(part7)--环境空间
  8. pycharm打包.py程序为可执行文件exe
  9. java跟python对比_【多年的Java程序员总结Java与Python的对比 】
  10. 将z-blog改成英文blog所遇到的问题
  11. 03-18 OpenSTF-手机设备管理平台
  12. 数组问题常用的O(N)算法:单调队列
  13. ceph_OSD的添加删除
  14. SpringBoot2.0系列教程(四)Springboot框架自定义消息转换器
  15. 东汉唯物主义哲学家——王充
  16. 图片太普通,教你轻松制作画中画特效
  17. 8086与8255实现数码管动态显示
  18. 台式计算机的日常保养,台式电脑硬件日常维护
  19. Mysql 的utf8编码 PK utf8mb4编码
  20. 支持markdown的服务器,Algernon:支持Lua,Markdown,HTTP/2的全功能Web服务器

热门文章

  1. collection.stream()以及collect()方法
  2. redis 将key的有效时间设置为不过期命令
  3. RabbiMQ基础以及spring-boot-starter-amqp使用
  4. ORACLE索引重建方法与索引的三种状态
  5. 使用DataX从ORACLE同步数据到MYSQL
  6. Android Studio 2.3的各种新增疑难杂症
  7. keep-alive + vuex + mint + Infinite scroll 保存分页列表数据
  8. Learn Python 014: Funtions
  9. sql server生成不重复的时间字符串
  10. 小蚂蚁学习mysql性能优化(8)--数据库结构优化--范式化和反范式化,水平分表,垂直分表...