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