1. Flask简介¶
1.1. Flask诞生¶
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web 开发框架。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login, 数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。 比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。 Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。
1.2. Flask特点¶
Python后端框架超级多,每个框架都有自己的特点和诞生愿意。对于Django来讲就是大而全,但对于 Flask的核心思想就是,只提供一个极小内核,需要什么自己外挂什么,常见的Flask的特点有:
- 轻巧
- 简洁
- 扩展性强,需要啥加挂啥
- 核心聚焦,因为内核啥也没有,自然聚焦了。
Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子, 也能结合最流行最强大的Python库。
入门简单,即便没有多少web开发经验,也能很快做出网站。
非常适用于小型网站。
非常适用于开发web服务的API。
开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验。
各方面性能均等于或优于Django。
Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库。
Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一。
Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django。
Flask比Django更加Pythonic,与Python的philosophy更加吻合。
1.3. Flask 与 Django 的关系¶
理论上讲(本人没试验过), 把Django各种模块删掉并转化成相应的独立模块,django可以精简成一个 flask框架。
Flask加挂各种模块,然后彻底固化在一起,可以再造一个Django。
Django和Flask的区别只在有设计思想的根本区别:
- Django:提供大而全开箱即用的框架
- Flask: 提供一个极小但灵活的微框架,需要什么自己加
Django确实”重”, 我们部署一个大型Django项目,内存占用涨到20G+。除了项目本身确实庞大的原因外, Django的庞大也是原因之一。
1.4. Flask常见外挂¶
- Flask-SQLalchemy:操作数据库;
- Flask-script:插入脚本;
- Flask-migrate:管理迁移数据库;
- Flask-Session:Session存储方式指定;
- Flask-WTF:表单;
- Flask-Mail:邮件;
- Flask-Bable:提供国际化和本地化支持,翻译;
- Flask-Login:认证用户状态;
- Flask-OpenID:认证;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
- Flask-Admin:简单而可扩展的管理接口的框架