Python 四大主流 Web 编程框架

作者:陈秋歌 | 编辑:真经君
链接:blog.csdn.net/chenqiuge1984/article/details/80127498
 

Python 四大主流 Web 编程框架

文章插图
 
码农真经(ID:coder_experience)第 28 次推文 图片来自网络
上一篇:Python 为什么要保留显式的 self ?
正文
本文内容摘录自《Python高效开发实战——Django、Tornado、Flask、Twisted》一书 。该书分为三部分:第1部分是基础篇,带领初学者实践Python开发环境和掌握基本语法,同时对网络协议、Web客户端技术、数据库建模编程等网络编程基础深入浅出地进行学习;第2部分是框架篇,学习当前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,达到对各种Python网络技术融会贯通的目的;第3部分是实战篇,分别对4种框架进行项目实践,利用其各自的特点开发适用于不同场景的网络程序 。
目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实 。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted 。
网络框架及MVC架构
所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议、线程、进程等方面 。这样能大大提高开发者的工作效率,同时提高网络应用程序的质量 。
在目前Python语言的几十个开发框架中,几乎所有的全栈网络框架都强制或引导开发者使用MVC架构开发Web应用 。所谓全栈网络框架,是指除了封装网络和线程操作,还提供HTTP栈、数据库读写管理、html模板引擎等一系列功能的网络框架 。本文重点讲解的Django、Tornado和Flask是全栈网络框架的典型标杆;而Twisted更专注于网络底层的高性能封装而不提供HTML模板引擎等界面功能,所以不能称之为全栈框架 。
MVC(Model-View-Controller)模式最早由Trygve Reenskaug在1978年提出,在20世纪80年代是程序语言Smalltalk的一种内部架构 。后来MVC被其他语言所借鉴,成为了软件工程中的一种软件架构模式 。MVC把Web应用系统分为3个基本部分 。
模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑的部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能 。Model不依赖于View和Controller,它们可以在任何时候调用Model访问数据 。有些Model还提供了事件通知机制,为在其上注册过的View或Controller提供实时的数据更新 。
视图(View):负责数据的显示和呈现,View是对用户的直接输出 。MVC中的一个Model通常为多个View提供服务 。为了获取Model的实时更新数据,View应该尽早地注册到Model中 。
控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能 。当用户的输入导致View发生变化时,这种变化必须是通过Model反映给View的 。在MVC架构下,Controller一般不能与View直接通信,这样提高了业务数据的一致性,即以Model作为数据中心 。
这3个基本部分互相分离,使得在改进和升级界面及用户交互流程时,不需要重写业务逻辑及数据访问代码 。MVC架构如图1所示 。
MVC架构图
 
Python 四大主流 Web 编程框架

文章插图
 
注意:MVC在除Python外的其他语言中也有广泛应用,例如VC++的MFC、JAVA的Structs及Spring、C#的.NET开发框架,读者应该有深刻的体会 。
4种Python网络框架:Django、Tornado、Flask、Twisted
接下来带领大家学习当今主流的4种Python网络框架 。
企业级开发框架——Django
Django于2003年诞生于美国堪萨斯(Kansas)州,最初用来制作在线新闻Web站点,于2005年加入了BSD许可证家族,成为开源网络框架 。Django根据比利时的爵士音乐家Django Reinhardt命名,作者这样命名Django意味着Django能优雅地演奏(开发)功能丰富的乐曲(Web应用) 。
它是当前Python世界里最负盛名且最成熟的网络框架 。最初用来制作在线新闻的Web站点,目前已发展为应用最广泛的Python网络框架 。Django的各模块之间结合得比较紧密,所以在功能强大的同时又是一个相对封闭的系统,但是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决方法 。
Django框架的特点
相对于Python的其他Web框架,Django的功能是最完整的,Django定义了服务发布、路由映射、模板编程、数据处理的一整套功能 。这也意味着Django模块之间紧密耦合,开发者需要学习Django自己定义的这一整套技术 。Django的主要特点如下 。


推荐阅读