Python-Web 框架介绍

Web 框架介绍

Python的web框架可算是百花齐放,各种框架和微框架数不胜数,关于 Python 框架孰优孰劣的讨论一直没有间断过。这种争论给 Web 开发工程们带来了很大的困扰,尤其对初中级的工程师来说,不知道如何选择。

主流Web框架有以下几种。

Django

Django最初是被开发用来管理劳伦斯出版集团旗下一些以新闻内容为主的网站的它以比利时的吉普寒爵士吉他手 Django Relnharot 来命名,它和Flask 是使用最广泛的 Python Wed 框架。 Django 能如此知名很大程度上是因为提供了非常齐备的官方文档,它提供了一站式的解决方案,包含缓存、 ORM 、管理后台、验证、表单处理等,使得开发复杂的数据库驱动的网站变得很简单。但正因为它坚持自己对于 Wed 框架的理解,系统藕合度太高,替换掉内置的功能往往需要花费一些功夫,所以学习曲线也相当陡峭。

Flask

是一个轻量级 Wed 应用框架,它基于 WerkZeug 实现的 WSGI 和 JlnjaZ 模板引擎。 Flask 的作者是ArminROnaCher ,本来这只是愚人节开的一个玩笑,但是开源之后却受到 Python 程序员的喜爱,目前在 GitHub 上的 Star 数量已经超过了 DjangO 。它的设计哲学和 Django不同:只保留核心,通过扩展机制来增加其他功能。 Flask 用到的依赖都是 Pocoo 团队开发的。 Pocoo 团队其他的项目还有 Pygments 、 Sphlnx 、以及lodgeit.Flask 的扩展环境非常繁荣,基本上 Wed 应用的每个环节都有对应的扩展供选择,就算没有对应的扩展也能很方便地自己实现一个。

Pyramid

Pyramid在国内知名度并不高,主要原因是中文文档匮乏,其高级用法需要通过阅读源代码获取灵感。尽管被 Django 和 Flask 的光芒遮蔽,但是它的性能要比 Flask 高。 Pyramid 的灵感来源于 Zope 、 Pylons 1 . 0 和 Django 。小框架通常牺牲了大框架的特色.反之亦然。但是事实上拟门不能真正把控一个应用程序最终的发展情况,而 Pyramid在努力朝看胜任不同级别应用的框架的方向在走。虽然它默认使用 Chameleon 和 Mako 模板,但很容易切换成 JinjaZ ,甚至可以让多种模板引擎共存,通过文件后缀名来识别。豆瓣赞赏和豆瓣钱包等产品就是基于此框架实现的,代码量级和 Flask 相同 性能比 Flask 要略高。

Bottle

Bottle也是一个轻量级的 Wed 框架。它的特点是单文件,代码只使用了 Python 标准库,而不需要额外依赖其他第三方库。它更符合微框架的定义,截止到今天只有 4100 多行的代码。

Tornado

Tornado 全称 Tornado Web Server ,最初是由 FriendFeed开发的非阻塞式 Wed 服务器,现在我们看到的是被Fackbook收购后开源出来的版本。它和其他主流框架有个明显的区别:它是非阻塞式服务器,而且速度相当快。得益于其非阻塞的方式和对epoll的运用,T ornado每秒可以处理数以千计的连接,这意味着对于长轮询、 Wedsocket 等实时 Wed 服务来说,Tornado 是一个理想的 Wed 框架。

Wed.Py

Wed.Py也是一个微框架由Reddlt联合创始人、RSS 规格合作创造者、著名计算机黑客 Aaron SWartZ 开Wed _.Py 使用基于类的视图,简单易学却功能强发大.

小众的 Web 框架

QUIXote

QuiXote 是由美国全国研究创新联合会 ( Corporatlon for National Research Initiatives , CNRI )的工程师 AM.Kchling 、 Nell Schemenauer 和 Greg Ward 开发的一个轻量级 Wed 框架,它简单、高效、代码简洁。豆瓣的大部分用户产品都使用定制版的 Qulxote 作为 Web 框架,虽说这有历史原因(当时 Djang 口 Rask 等框架还没有出现),但是也证明这个始于 20 (刃年的框架是可以经受时间考验的。它使用目录式的 URL 分发规则,用 Python 来写模板。 PTL 模板更适合程序员,但是并不适合美工参与前端代码的编写和修改,豆瓣在开发中使用了 Mako替代了PTL,不建议在生产环境选用 Quixoteo

Klein

Klein是 Twisted 组织开源出来的基于 werkZeug 和 twisted.wed 的微框架。 Flask 很不错,但是不能使用异步非阻塞的方式编程,根本原因是它和 Django 、 Pyramid一样,都基于 WSGI ,而 WSGI 的接口是同步阻塞的。Klein 用法非常像 Flask ,却可以使用异步的方式开发 Web 应用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112A0ITMJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券