Python Restful API 框架 Django VS Flask

Python是最受好评的编程语言之一。 它因为简洁的语法,高效的编程速度,成为了大众的青睐。 对于任何初学者来说,python永远都是他们的首选。 自1991年发布以来,Python已经开发了许多框架和类库,这些框架和类库不仅加速了应用程序的开发,而且还提高了科学计算的研发,并且同时增添了许多图形用户界面。
现在主流的框架有下面几个:
*Django,流行但是笨重,还麻烦,人生苦短,肯定不选
*web.py,轻量,但据说作者仙逝无人维护,好吧,先pass
*tornado,据说倡导自己造轮子,虽然是facebook开源的吧,但听到这个,就算了吧
*Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm + Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。

那么在众多python web开发框架中,django和flask绝对是金字塔尖上的两颗明珠。对于Restful api的设计和开发,这两个谁更适合一些呢?

Django

Django是一个全能的Web框架,具有BSD许可证,可以作为开放源代码使用,使用它开发人员可以快速开发出一个Web应用程序。 它包括多个软件包,用于处理典型通用的Web开发任务,例如身份验证,内容管理,支架,模板,缓存等。django还提供了专门用于开发 REST的框架(DRF),它对于REST API开发和部署非常友好。

Django Rest框架

DRF是一个开源,成熟的Python和Django库,旨在帮助APP开发人员构建复杂的Web API。 DRF的模块化,灵活和可自定义的体系结构使开发REST API变得异常容易。 DRF是一个使用描述视图和API接口之间映射关系的序列化程序。通过划分模型,概括线路等表示形式(例如JSON或XML)来满足特定的API接口。

Django的优点:

开源框架,有丰富的文档支持
功能非常强大,提供各个模块解决常用问题
强大的路由系统,可以定制优雅的URL
提供集成好的简易后台管理

Django的缺点:

系统紧耦合,想用喜欢的第三方库来代替是比较困难的,使用补丁也不顺畅
自带的ORM不如SQLAlchemy强大。
模板功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现 Tag或Filter。

Flask

Flask是基于Werkzeug(WSGI工具包)和Jinja 2(模板引擎)的Python开发人员的微框架。 Flask易于设置且易于使用。与其他框架一样,它具有多种现成的功能,例如内置的开发服务器,调试器,单元测试支持,模板,安全cookie和RESTful请求分派。Flask RestfulFlask-RESTful是Flask的扩展,为构建REST API提供了额外的支持。Flask-Restful是与现有ORM库一起使用的轻量级框架。 Flask-RESTful推荐通过最少的配置达到最快的部署。Flask-RESTful具有足智多谋的路由系统,有了它,你可以做任何自定义跳转。Flask-RESTful提供了基于Flask可插拔的视图资源。可插拔视图提供了一种访问HTTP方法的简单方法。 RESTful请求解析器旨在提供对(flask.request)请求对象中包含的任何变量的统一而直接的访问。在大多数情况下,应用程序开发人员更喜欢控制渲染响应数据,并且Flask-RESTful提供了一种机制,您可以在其中使用ORM模型甚至自定义类作为渲染对象。关于此框架的另一个有趣的事实是,应用程序开发人员无需担心会暴露任何内部数据结构,因为它采用一种格式并过滤响应对象。因此,当我们查看代码时,很明显哪些数据将用于渲染以及如何格式化它们。

Flask框架的的优点

非常灵活,代码简洁,核心代码只依赖Werkzeug WSGI工具箱和Jinja2模板引擎
扩展时开发,可以非常方便和第三方库进行集成

Flask框架的缺点

对于新手的学习曲线较高
可选择的第三方库优劣不一,导致项目质量不稳定
需要开发人员有大量的经验才能开发出有质量保证的程序

总结

可以说python的开发者是非常幸福的,因为它们有两个非常好用的框架来进行web开发,然而如何选择却是一个难题,可能这就是幸福的烦恼吧。对于新手来说,推荐使用django来进行开发,因为你会有更丰富的文档帮助,你会轻松实现你想要的功能。对于性能要求较高的web,推荐使用flask,因为它灵活的配置和友好的扩展接口可以让你编写出更高效地程序。当然,仁者见仁智者见智,两者没有孰强孰弱,都是非常棒的框架,如果你有时间的话,两者都可以学习一下,也许你会从此爱上这两个框架。

推荐阅读更多精彩内容