首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
前端开发
›
Python 四大主流 Web 编程框架
返回列表
发新帖
Python 四大主流 Web 编程框架
[复制链接]
发表于 2025-11-2 19:41:28
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
现在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架构图
注意: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框架而搭建的,好比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()函数,测试步调可以模拟举行HTTP访问的客户端来调用Flask路由处理惩罚函数,而且获取函数的输出来举行自界说的验证。
使用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等特性来支持异步编程。
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是渴望各人少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答题目,对峙几天便放弃的感受的话,在这里我给各人分享一些自动化测试的学习资源,渴望能给你进步的路上带来资助。
软件测试口试文档
我们学习肯定是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,而且有字节大佬给出了权势巨子的解答,刷完这一套口试资料信赖各人都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋侪来说应该是最全面最完备的备战堆栈,这个堆栈也伴随我走过了最艰巨的旅程,渴望也能资助到你!以上均可以分享,点下方小卡片即可自行领取。
回复
使用道具
举报
返回列表
浏览过的版块
SAAS
Oracle
网络安全
数据仓库与分析
SQL-Server
物联网
程序人生
人工智能
DevOps与敏捷开发
Java
小秦哥
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表