Python web框架的选择

Python web框架的选择

  • 2016-12-13 更新: 加入 CherryPy

python web frameworks

一、缘起网站

大约十多年前(1998年),我做了人生中的第一个网站。那是用的语言是 ASP,工具是 FrontPage

后来(2000~2004年),我做了一段时间网站开发,负责前端到后端、美术到产品的所有内容,使用的语言是 ASPPHP,工具是 Macromedia DreamweaverEditplus

那时,我已经开始手写 CSS 和 HTML,并使用 <DIV> 重构网站了。

再后来,我就没有继续做网站了。

现在,因为众所周知的原因,我必须捡起这个老本行。由于一直都不太喜欢 PHP,我在考虑选择一个 Python Web 框架。

二、百花齐放的 Python Web 框架

这里有一个 不完全的列表 展示了一些 Python Web 框架。我关心的主要是下面几个:

三、相关对比

四、我的选择

根据上面的对比,我对这些框架的大致了解如下:

Django 是一个一站式解决方案,提供了所有web开发者需要的东西。它有相对封闭的环境和耦合较紧密的系统,同时提供一个管理员后台。但由于功能全面,学习起来可能需要花费较多的时间。但也是由于功能全面,对于不愿意费劲折腾的人来说,应该是更容易使用。文档方面,Django 做得非常优秀。

web.py 的原作者好像已经出走?Tornade 算是 web.py 的继任者和加强版,同时它还是个服务器。但文档方面貌似比较缺乏。

Bottle 是和 web.py 类似的微型框架,它的设计更加简洁合理,且只有一个 3K 行的 py 文件,可支持多种模板和服务器。文档也足够完善。

CherryPy 是个优秀的微星框架。而且自带一个可以用于生产环境的基于线程池的 Web 服务器。使用 Flask 开发,使用 CheeryPy 来部署甚至成了一种通用的部署方式。

Flask 也是微型框架,在使用上和 Bottle 很像。但Flask 是 Pocoo 团队的作品,在使用上应该更有保障。文档丰富,且有中译本。

由于我比较爱折腾,Flask 的社区也相对完善,所以选择 Flask