点选“合作开发人员控制技术第一线”,优先选择“隆哥蒙🔝”
13:21 在看|隆哥蒙|回帖, 真爱
作者:陈秋歌 镜像:
https://blog.csdn.net/chenqiuge1984/article/details/80127498
责任编辑文本Lezoux《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):用于封装与应用领域流程的销售业务方法论相关的数据及对数据的处置方Model访问数据。有些Model还提供了事件通知机制,为在其上注册过的View或Controller提供实时的数据更新。
视图(View):负责数据的显示和呈现,View是对用户的直接输出。MVC中的
控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能。当用户的输入导致View发生变化时,这种变化必须是通过Model反映给View的。在MVC构架下,Controller一般不能与View直接通信,这种提升了销售业务数据的一致性,即以Model作为数据中心。
这3个基本上部份互相分离,使得在改进和升级界面及用户交互流程时,不需要重写销售业务方法论及数据访问代码。MVC构架如图1所示。
MVC构架图
注意: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的主要特征如下。
完善的文档:经过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单元测试功能无缝衔接单元测试是对最小软件合作开发单元的测试,其重点测试流程的内部结构,主要采用白盒测试方法,由合作开发人员负责。单元测试的主要目标是保证函数在给定的输入状态下,能得到预想的输出,在不符合要求时能提醒合作开发人员展开检查。
Flask提供了一个与Python自带的单元测试构架unitest无缝衔接的测试接口,即Flask对象的test_client()函数。通过test_client()函数,测试流程可以模拟展开H
使用Jinja2模板将HTML页面与后台应用领域流程联系起来一直是中文网站流程构架的一个重要目标。Flask通过使用Jinja2模板控制技术解决了这个问题。Jinja2是一个非常灵活的HTML模板控制技术,它是从Django模板发展而来的,但是比Django模板使用起来更加自由且更加高效率。Jinja2模板使用配制的语义控制系统,提供灵活的模板继承控制技术,自动抗击XSS跨站攻击并且易于调试。
完全兼容WSGI 1.0标准WSGI(Web Server Gateway Interface)具有很强的伸缩性且能运转于多缓存或多民主化自然环境下,因为Python缓存全局锁的存在,使得WSGI的这个特性至关重要。WSGI已经是Python界的一个主要标准,各式各样大型网路服务器对其都有良好的支持。WSGI位于Web应用领域流程与Web服务器之间,与WSGI完全兼容使得Flask能配置到各式各样大型互联网服务器中。
如前所述Unicode编码Flask是完全如前所述Unicode的。这对制作非纯ASCII字符集的中文网站来说非常方便。HTTP本身是如前所述字节的,也就是说任何编码格式都可以在HTTP中传输。但是,HTTP要求在HTTP Head中显式地声明在本次传输中所应用领域的编码格式。在默认情况下,Flask会自动添加一个UTF-8编码格式的HTTP Head,使流程员无须担心编码的问题。下层自定义协定互联网构架——Twisted
以上讲到的3个Python Web构架都是围绕着应用领域层HTTP展开的,而Twisted是一个例外。Twisted是一个用Python语言编写的事件驱动的互联网构架,对于追求服务器流程性能的应用领域,Twisted构架是一个很好的优先选择。
Twisted是一个有着10多年历史的开源事件驱动构架。Twisted支持许多种协定,包括传输层的UDP、TCP、TLS,以及应用领域层的HTTP、FTP等。对于所有那些协定,Twisted提供了应用领域程序和服务器各方面的合作开发工具。
Twisted构架的历史悠久,其主要发行版本都以Python 2为此基础,最新的版本为如前所述Python 2.7的Twisted-15.4.0。Twisted社区正在合作开发如前所述Python 3的版本,但现阶段为止尚没有如前所述Python 3的Twisted稳定发行版。
Twisted是一个高性能的编程构架。在相同的操作控制系统平台上,Twisted借助相同的下层控制技术实现了高效率能通信。在Windows中,Twisted的实现如前所述I/O完成端口(IOCP,Input/Output Completion Port)控制技术,它保证了下层高效率地将I/O事件通知给构架及应用领域流程;在Linux中,Twisted的实现如前所述epoll控制技术,epoll是Linux下多路复用I/O接口select/poll的增强版本,它能显著提升流程在大量并发连接中只有少量活跃的情况下的控制系统CPU借助率。
在合作开发方法上,Twisted引导流程员使用异步程式设计模型。Twisted提供了丰富的Defer、Threading等特性来支持异步程式设计。欲进一步了解Python五大非主流互联网程式设计构架的程式设计方法、工程项目两栖作战,可参见《Python高效率合作开发两栖作战——Django、Tornado、Flask、Twisted》那哥。
更多爬虫文本:
充气娃娃什么感觉?Python 告诉你!
为了给小女友挑合适罩杯的内衣,我用 Python 爬了淘宝内衣店的数据!
被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器
如何用 Python 了解女朋友 的情绪变化?
—END—优先选择”合作开发人员控制技术第一线 “隆哥蒙🔝,文本一触即达。点选原文更多惊喜!
合作开发人员控制技术第一线的优秀指南。
历史推荐
点个在看,解锁更多惊喜!