因为最近开始了一个新的项目cfBlog2,开始对python的web框架进行了一些研究。
所以将一些研究的心得写在这里,供之后有须要的朋友参考。python
Python在国内应该是除了PHP之外最流行的开发语言了(在国外的或许ROR能竞争,但在国内估计用的人没多少)。在PHP的世界里面,有一堆开发框架,有国产的ThinkPHP、YII、CI,稍微新一点的Larvel5,每一个都有很多的用户并且项目的活跃度都不错。相对来讲Python就会略微逊色,名义上是有Django、Flask、Bottle、Pyramid、Web2Py等,但实际真正活跃的却很少。阵营来讲划分仍是比较明确:以Django为首的重量级框架和以Bottle、Flask为首的轻量级框架,所以在这里我选择两个社区相对活跃的两个典型做为比较。web
Django是基于中间件的一个大型框架。框架自己的内容至关丰富,基础部分:模版引擎、ORM、表单、路由分发这些标配,还有很多的中间件:登录、后台管理,这些仍是官方中间件,另外还有很多的第三方中间件。关于第三方的我没有详细研究过,质量不太好评论。还有由ROR带起的基于命令的Web开发方式和扩展、还有内建的数据库迁移,基本上你呢想到的Django都有。能够说Django和Python至关匹配,前者是Web开发的万金油,后者是开发领域的万金油。
另外Django这个框架自己还有一个专门的基金会,这个基金会是由Django的母公司成立的,估计有很多用这个框架的公司也对期捐助过。框架自己至关活跃,每隔大概8个月就有一个大版本。
社区也是至关活跃,官方的Community、非官方(StackOverflow)和IRC(听说IRC是比任何一个开源项目都要活跃)基本上你碰到的问题你们都会有解决或者Workout方案。数据库
FLASK框架自己只包含路由分发,请求和响应的封装和插件系统,在加上做者本身的Werkzeug(处理WSGI)、jinja2(模板引擎)和Flask-SQLAlchemy扩展(Model层),这几个同一个做者的项目构成一个完整的MVC框架。
对于Flask自己,一个微框架,这已经足够了,并且它也只能提供这么多。
若是你须要表单处理,请安装Flask-WTF;若是你须要基于命令的开发模式,请安装Flask-Script和Flask-CLI(这是一个Flask1.0的backport模块);若是你要登录验证,请装Flask-Login;若是你要后台管理,请装Flask-Admin。什么?!你所有都要?请装Django。
对Flask就是这么一个框架。这是一个典型的社区项目,做者在实现了一个牛X的核心之后,就撒手交给社区。各个插件的文档分散(虽然Flask曾经出了一本书,试图打通各个插件和Flask关系,可是当须要真正使用的时候,查文档仍是须要在不一样的Chrome Tab里面切换),并且社区插件的质量、支持和活跃度也须要话很大的力气去确认。
Flask这个项目毫无疑问是优秀的:完善的官方文档,详细的教程(
鉴于Flask和Django的特色,若是你是开发一个REST API的系统,没有复杂的分层和逻辑的话,Flask会是一个不错的选择,由于框架内建的功能已经足够你完成这个任务;又或者,你是打算实现一个大型的系统,须要本身从新实现大部分插件的内容,Flask也仍是不错,由于它足够的简单,能让你快速的读懂和扩展。
其余的状况我仍是推荐你用回Django。尤为是当你须要安装大量的Flask插件,去实现Django原本就有的功能时,你就应该意识到你须要放弃Flask。
固然这只是我的的见解,也没有绝对这一说,主要仍是看你想在框架上花费多少的时间。flask