完善的文档:经过10多年的发展和完善,Django有广泛的应用和完善的在线文档,开发者遇到问题时可以搜索在线文档寻求解决方案 。
集成数据访问组件:Django的Model层自带数据库ORM组件,使开发者无须学习其他数据库访问技术(dbi、SQLAlchemy等) 。
强大的URL映射技术:Django使用正则表达式管理URL映射,因此给开发者带来了极高的灵活性 。
后台管理系统自动生成:开发者只需通过简单的几行配置和代码就可以实现完整的后台数据管理Web控制台 。
错误信息非常完整:在开发调试过程中如果出现运行异常,则Django可以提供非常完整的错误信息帮助开发者定位问题,比如缺少xxx组件的配置引用等,这样可以使开发者马上改正错误 。
Django的组成结构
Django是遵循MVC架构的Web开发框架,其主要由以下几部分组成 。
管理工具(Management):一套内置的创建站点、迁移数据、维护静态文件的命令工具 。
模型(Model):提供数据访问接口和模块,包括数据字段、元数据、数据关系等的定义及操作 。
视图(View):Django的视图层封装了HTTP Request和Response的一系列操作和数据流,其主要功能包括URL映射机制、绑定模板等 。
模板(Template):是一套Django自己的页面渲染模板语言,用若干内置的tags和filters定义页面的生成方式 。
表单(Form):通过内置的数据类型和控件生成HTML表单 。
管理站(Admin):通过声明需要管理的Model,快速生成后台数据管理网站 。
高并发处理框架——Tornado
Tornado是使用Python编写的一个强大的可扩展的Web服务器 。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中 。Tornado作为FriendFeed网站的基础框架,于2009年9月10日发布,目前已经获得了很多社区的支持,并且在一系列不同的场合中得到应用 。除FriendFeed和Facebook外,还有很多公司在生产上转向Tornado,包括Quora、Turntable.fm、Bit.ly、Hipmunk及MyYearbook等 。
相对于其他Python网络框架,Tornado有如下特点 。
完备的Web框架:与Django、Flask等一样,Tornado也提供了URL路由映射、Request上下文、基于模板的页面渲染技术等开发Web应用的必备工具 。
是一个高效的网络库,性能与Twisted、Gevent等底层Python框架相媲美:提供了异步I/O支持、超时事件处理 。这使得Tornado除了可以作为Web应用服务器框架,还可以用来做爬虫应用、物联网关、游戏服务器等后台应用 。
提供高效HTTPClient:除了服务器端框架,Tornado还提供了基于异步框架的HTTP客户端 。
提供高效的内部HTTP服务器:虽然其他Python网络框架(Django、Flask)也提供了内部HTTP服务器,但它们的HTTP服务器由于性能原因只能用于测试环境 。而Tornado的HTTP服务器与Tornado异步调用紧密结合,可以直接用于生产环境 。
完备的WebSocket支持:WebSocket是HTML5的一种新标准,实现了浏览器与服务器之间的双向实时通信 。
因为Tornado的上述特点,Tornado常被用作大型站点的接口服务框架,而不像Django那样着眼于建立完整的大型网站,所以本章着重讲解Tornado的异步及协程编程、身份认证框架、独特的非WSGI部署方式 。
支持快速建站的框架——Flask
Flask是Python Web框架族里比较年轻的一个,于2010年出现,这使得它吸收了其他框架的优点,并且把自己的主要领域定义在了微小项目上 。同时,它是可扩展的,Flask让开发者自己选择用什么数据库插件存储他们的数据 。很多功能简单但性能卓越的网站就是基于Flask框架而搭建的,比如http://httpbin.org/就是一个功能简单但性能强大的HTTP测试项目 。Flask是一个面向简单需求和小型应用的微框架 。
相对于其他Python语言的Web框架而言,Flask的特点可以归结如下 。
内置开发服务器和调试器
网络程序调试是在将编制好的网站投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程 。有经验的开发者都知道,这是保证网站系统能够正式应用的必要步骤 。
Flask 自带的开发服务器使开发者在调试程序时无须再安装其他任何网络服务器,比如Tomcat、JBoss、Apache等 。Flask默认处于调试状态,使得运行中的任何错误会同时向两个目标发送信息:一个是Python Console,即启动Python程序的控制台;另一个是HTTP客户端,即Flask开发服务器将调试信息传递给了客户端 。
与Python单元测试功能无缝衔接
推荐阅读
- 如何让 Python 处理速度翻倍?内含代码
- Docker 安装 Nginx、PHP、MySQL、Tomcat、Python、Redis、Apache
- Python中with语句是干什么用的?
- 中国有几大无人区 中国的四大无人区是什么地方
- 藏族四大神山 藏族信仰的神
- 四大奇洞之谜 中国十大奇洞
- 东北四大神兽是什么动物 东北的八大神兽是什么
- 如何用 Python 实现 TCP 的连接与通信?
- 信阳市地税局,四大服务给力茶业加速发展
- 如何使用 Flask 编写 Python Web API