发布日期:2024-01-25 23:25浏览次数:
大师好,近来用了 2 周的光阴整饬了 Python 中完全的网站开荒库(下文简称:Web 框架),征求每个库的有点、过失。
库排序是遵照操纵人数和文档的生动度为参考举行的,倡议大师操纵排名靠前的框架,由于它们的文档更十全,本领积蓄要更众,社区更郁勃,能获得更好的增援,正在碰到己方无法处理的题目,能够更速更高效的找到解答的计划。可爱本文记得保藏、眷注、点赞。
A:Web 框架紧要用于网站开荒。开荒者正在基于 Web 框架竣工己方的营业逻辑。Web 框架竣工了良众功效,为竣工营业逻辑供给了一套通用伎俩。
A:操纵 Web 框架,良众的营业逻辑外的功效不必要己方再去完备,而是操纵框架已有的功效就能够。Web 框架使得正在举行 网站开荒的时分,淘汰了事业量。
A:Web 框架紧要用于网站开荒,能够竣工数据的交互和营业功效的完备。操纵 Web 框架举行 网站开荒的时分,正在举行数据缓存、数据库访谒、数据安详校验等方面,不必要己方再从头竣工,而是将营业逻辑相干的代码写入框架就能够。
优 点:是一个高目标 Python Web 开荒框架,特色是开荒迅疾、代码较少、可扩展性强。Django 采用 MTV(Model、Template、View)模子机闭资源,框架功效丰厚,模板扩展拣选最众。关于专业职员来说,Django 是当之无愧的 Python 排名第一的 Web 开荒框架。
缺 点:征求少许轻量级操纵不必要的功效模块,不如 Flask 简捷。太甚封装良众类和伎俩,直接操纵比力粗略,但改动起来比力清贫。比拟于 C,C++ 功能,Djang 功能偏低。模板竣工了代码和样式全部分别,不肯意模板里显露 Python 代码,精巧度不敷。别的进修弧线也相对高峻。
优 点:Flask 是一个 Python Web 开荒的微框架,端庄来说,它仅供给 Web 供职器增援,不供给全栈开荒增援。然而,Flask 绝顶轻量、绝顶粗略,基于它搭修 Web 体例都以分钟来计时,额外适合小微原型体例的开荒。花少光阴、发生可用体例,诟谇常划算的拣选。
缺 点:关于大型网站开荒,必要策画途由照射的规矩,不然导致代码杂沓。对新手来说,容易操纵低质料的代码创修 “不良的 web 操纵序次”。
优 点:是一个扩展性很强且精巧的 Python Web 开荒框架。上手万分容易,比力适合中等周围且边开荒边策画的场景。Pyramid 不供给绝对端庄的框架界说,凭据需求能够扩张开发,对高阶序次员万分友爱。
缺 点:邦内着名度不高,高级用法必要通过阅读源代码获取灵感。默认操纵 Chameleon 模板,精巧度没有成为一个因素。
优 点:正如其名,web.py 是一个采用 Python 动作开荒言语的 Web 框架,粗略且壮健。俄罗斯排名第一的 Yandex 寻求引擎基于这个框架开荒,Guido van Rossum 以为这是最好的 Python Web 框架,还必要说其它吗?有结果作证、有大牛认同,用起来吧!
缺 点:Web.py 并未像其他框架雷同维系与 Python 3 兼容性的最新状况。这不但意味着缺乏对异步语法的增援,还意味着贫乏对已弃用的函数的过失。别的,目前尚不明晰爱护者是否有策划正在 Python 2 来到其增援人命周期停止后维系 Web.py 的最新状况。
优 点:Tornado 是一个基于异步搜集功效库的 Web 开荒框架,因而,它能增援几万个怒放毗连,Web 供职高效安谧。可睹,Tornado 适合高并发场景下的 Web 体例,开荒历程必要采用 Tornado 供给的框架,精巧性较差,确定场景后再探究操纵不迟。
优 点:TurboGears 最新版本 试图处理 TurboGears 最第一版本、Django、Rails 等框架缺陷,它增援无数据库、JavaScript 东西集、众种数据互换款式等,当然,它开荒绝顶高效,扩展性很强。试问它与 Django 哪个更好?还真欠好说,Django 社区更为生动或者更首要。
缺 点:TurboGears 的少许过失征求束缚功效较为根底,较少的第三方操纵序次以及惟有低级的文档。TurboGears 的一个强大离间是它的胜过性。由于它混搭的其他组件都供给无尽的精巧性, 当试图决计何种途途来告竣一个职责时它是过于庞杂的。
优 点:CherryPy 或许闪开发者遵照其他面向对象序次一样的策画伎俩开荒 Web 体例,进而采用起码的代码、最简捷的形式。CherryPy 依然开荒了 10 年之久,安谧性较好,绝顶适合小周围 Web 体例和纯粹的 Python 序次员。感觉到了什么?Python 大有一统江湖之势!拭目以待。
缺 点:只包罗为 web 页面供给供职所需的少量实质外,它该当尽能够地让人感想它不像 “web 框架”,而是像任何其他类型的 Python 操纵序次雷同。CherryPy 包罗的位用作初级构修块。征求会话标识符和 cookie 管理,但不征求 HTML 模板。像 Bottle 雷同,CherryPy 供给了一种将途由照射到磁盘上的目次以供静态文献供职的伎俩。
优 点:Falcon 是一个增援大周围微供职 API 或搬动 App 后端呼应的 Web 开荒框架,它全部基于 Python 并供给了绝顶高的功能、牢靠性和可扩展性。Falcon 定位奇异且特质昭彰,关于 App 开荒者,后端体例构修可能探究 Falcon,十之八九是不会反悔的。
缺 点:Falcon 过失是其打包模块有点太少,有途由,中心件,钩子,除此以外就不供给其他功效了(裸壳)。异常其他功效,好比验证等都必要开荒职员来开荒扩展。由于其策画中就假设用于构修 REST API。
优 点:Asgineer 是一种编写异步 Web 操纵序次的东西,操纵尽能够少的笼统,同时还是供给友爱的 API。只需几分钟即可阅读指南和参考原料!正在 Uvicorn 上运转 Asgineer 时,它是可用的最速的 Web 框架之一。它增援 http 长轮询、供职器端事变 (SSE) 和 websockets。而且具有以无误(且迅疾)的形式为资产供给供职的适用序次。
优 点:Bottle 是一个用于 Python 的迅疾、粗略和轻量级的 WSGI 微型搜集框架。它动作单个文献模块分发,除了 Python 准则库以外没有任何依赖项。增援整洁和动态的 URL。迅疾和 Pythonic 内置模板引擎,增援 mako、jinja2 和 cheetah 模板。轻易地访谒外单数据、文献上传、cookie、题目和其他与 HTTP 相干的元数据。
缺 点:Bottle 极简主义的一个后果是有些功效基本就不存正在。不增援外单验证,征求 CSRF 偏护等功效。要是要构修增援高度用户交互的 Web 操纵序次,则必要己方增添它们。
优 点:编写文雅的代码,埋头于您的产物,你该当把更众的光阴花正在你的产物而不是底层框架上。Emmett 是发现家的框架,由于它旨正在简化您的开荒历程,其语法粗略、易于进修和理会。不要正在途由器和不顺心的形式之间奢华光阴:每次为操纵序次写下途由时,一齐都明晰地展现正在您的面前。
优 点:操纵类型注解将恳求 / 呼应声明为数据类和字典,操纵 jsondaora 验证输入数据,最速的 python api 框架之一,能够正在任何 asgi 供职器上运转。
优 点:Quixote 是一个操纵 Python 编写基于 Web 的操纵序次的框架华体会体育官方。它的方针是按此规律竣工精巧性和高功能。Quixote 操纵序次的构造往往相仿于守旧操纵序次。款式化网页的逻辑由 Python 类和函数构成。Quixote 不强制分别默示逻辑和 “后端” 逻辑。相反,咱们饱吹您操纵守旧本领。比如,一种处理计划是将默示逻辑放正在其己方的子包中。
缺 点:固然 Quixote 获得主动爱护,但宣布频率较低。近来开荒的核心是修复过失、升高准则合规性和推广 Quixote 的精巧性。
优 点:reahl 是一个能够闪开发者全部用 Python 言语编写 Web 操纵的怒放框架,采用 Python 动作独一开荒言语是其最大特质。别的,reahl 供给了相当了然且简明的开荒组修,关于开荒通常功效性 Web 体例足够了然且可行。
缺 点:供给笼统词汇时,无法左右少许更高级的用户界面成果,目前不肯意操纵 Sass 构修 Bootstrap 的修削版本,并增援更高级的用户界面形式
优 点:Hug 是一个 Python 3 API 开荒框架。它的策画使软件工程师能够一次开荒 API,然后正在必要时再操纵它。Hug 框架通过供给各样接口来简化 API 开荒。这便是为什么该框架被称为 Python 3 中最速的框架之一的紧要原故。
缺 点:它操纵以前的 WSGI 准则,这是一个同步框架,以是它不行管理像 WebSockets 和其他异步恳求,不管若何说,它还是有绝顶好的功能再现。
优 点:竣工了 ASGI3 接口并操纵 Radix Tree 举行途由查找。是最速的 Python web 框架之一。一齐性情都供职于迅疾开荒高功能的 Web 供职。大批无误的类型注解,精巧且高效的途由体例,可视化 API 接口与正在线调试,增援 Server-sent events 与 WebSocket,自带一键布置夂箢 (基于 uvicorn 与 gunicorn),可操纵任何可用的 ASGI 生态。
缺 点:Index.py 不内置数据库、缓存等其他功效。拣选清贫者请直接操纵 Django。
优 点:Sanic 是一个 Python 3.7+ web 供职器和 web 框架,它的编写速率很速。它愿意操纵 Python 3.5 中增添的 async/await 语法,这使您的代码无雍塞且迅疾。该项目标方针是供给一种粗略的伎俩来启动和运转一个高功能的 HTTP 供职器,该供职器易于构修、扩展和最终扩展。
缺 点:就功效方面 Sanic 仿照 Flask,好比通过共享 Blueprints 的观点,轻细的子操纵序次,愿意开荒职员正在更大的操纵序次中拆分和机闭其代码。关于光光是数据增改削查 CRUD 操纵,Sanic 也不是一个好的拣选。
优 点:Starlette 是一个轻量级的 ASGI 框架 / 东西包,绝顶适合构修功能异步供职,它是坐蓐停当的,并为您供给以下实质:令人印象深切的再现。WwbSocket 增援。GraphQL 增援。经过内后台职责。启动和紧闭事变。基于恳求构修的测试客户端。CORS、GZip、静态文献、流呼应。会话和 Cookie 增援。100% 的测试遮盖率。100% 类型注解代码库。零硬依赖。
缺 点:Starlette 供给了完全根本的 Web 微框架功效。然而它不供给自愿数据验证,序列化或 API 文档。
优 点:FastAPI 是一个今世、迅疾(高功能)的 Web 框架,用于基于准则 Python 类型提示操纵 Python 3.6+ 构修 API。绝顶高的功能,与 NodeJS 和 Go 相当(感激 Starlette 和 Pydantic)。可用的最速的 Python 框架之一。淘汰大约 40% 的人工(开荒职员)激发的过失。简短,粗略,直观,强健。
缺 点:能够是新项目, 打包还不太完备。就目前版本而言,少许代码还不行寻常事业。但接口花式依然界说完毕,等候后面版本会加上去。
优 点:Molten 是一个最小的、可扩展的、迅疾的和高效的框架,用于操纵 Python 构修 HTTP API。策划自愿验证恳求,代码更容易爱护。实例可自愿序列化,包罗 API 正在实际宇宙中平凡央求的各样功效,普及操纵 PEP484 类型提示和 mypy。
缺 点:它没有操纵像第三方库(如 Pydantic)供给数据验证,序列化和文档,它有己方的库。因而,这些数据类型界说将不太容易重用。依赖注入体例必要对依赖项举行预注册,而且将基于已声明的类型处理依赖题目。因而,不行够声明众个组件来供给一个特定的类型。
优 点:一个功效壮健的 Python Web 框架,可简化显式开荒实行,同时排除全体状况。Clastic 是全部用 Python 言语编写的,巩固可重用性和可测试性,主动 URL 途由检验,更好地局限操纵序次初始化,革新的中心件类型,没有全体状况,ORM 用法,更容易的 WSGI 集成。
缺 点:Clastic 没有构修全体状况;URL 途由规矩参数和视图函数签字不般配,正在 Clastic 中,这种不般配会正在构修操纵序次时激发分外。
优 点:用于 asyncio 和 Python 的异步 HTTP 客户端 / 供职器。增援客户端和 HTTP 供职器,增援开箱即用的供职器 WebSockets 和客户端 WebSockets,没有回调地狱。Web 供职用具有中心件、信号和可插入途由。
求,要是操纵 HEAD 伎俩访谒会返回 405。要是管理器会写入良众呼应体实质,你能够正在实行 HEAD 伎俩时跳过管理呼应体实质以升高实行效劳。
优 点:今世和以开荒职员为中央的 Python Web 框架勉力于实实际际的 batteries,征求具有很众开箱即用功效的开荒职员东西,具有极其可扩展的架构。Masonite 绝顶适合初学者开荒职员进入他们的第一个 Web 操纵序次,以及必要敷裕诈欺 Masonite 的一起潜力来告竣他们的操纵序次的体味丰厚的开荒职员。Masonite 发愤竣工从装配到布置的迅疾轻省,因而开荒职员能够尽能够迅疾有用地从观点到创修。将其用于您的下一个 SaaS!测验一次,你就会坠入爱河。
缺 点:关于 Masonite 来说,最大的” 竞赛敌手” 是 Django, 由于社区正正在竭尽竭力将框架推向容易,令人愉悦的下一件大事。与 Django 比拟,Masonite 还是是婴儿,等候它异日的再现。
优 点:一个吻合 ASGI 的 Web 微框架,采用基于类的途由伎俩。受 CherryPy 的影响但与 asyncio 兼容。一个名为 Qactuar 的配套 ASGI 供职器是从这个目前正正在举行的项目中发生的。
缺 点:正在操纵拉取恳求,请操纵自愿款式化序次 iSort 和 Black 并操纵 MyPy 验证代码。这是正在不排除某些类型过失的情形下,并不老是能够使 MyPy 全部满足,然而起码尽你所能并严谨操纵注解 `# type: ignore`。最终,测验,尽能够供给最确切的类型提示。
优 点:Cyclone 是 Python 的 Web 供职器框架,它将 Tornado API 竣工为 Twisted 订交。Twisted 是一个事变驱动的 Python 搜集编程框架。它是最成熟的非雍塞 I/O 库之一,可供民众操纵。Tornado 是 FriendFeed 搜集供职器的开源版本,它是最时兴和最迅疾的 Python 搜集供职器之一,具有效于构修搜集操纵序次的绝顶不错的 API。除了丰厚的功效集以外,Cyclone 还处理了 C10K 题目。
优 点:Klein 是一个微框架,用于操纵 Python 开荒可用于坐蓐的 Web 供职。它是 “微” 的,由于它具有相仿于 Bottle 和 Flask 的绝顶小的 API。它不是 “微”,由于它依赖于准则库以外的东西。这紧要是由于它创造正在普及操纵和通过杰出测试的组件上,如 Werkzeug 和 Twisted。
优 点:AMQP RPC 和事变(宣布 - 订阅),HTTPGET、POST 和 websockets,CLI 竣工粗略迅疾的开荒,用于单位和集成测试的适用序次。
缺 点:nameko 微供职失足不会自愿打印过失日记,必要加上监控相干的依赖,策动繁茂型职责导致职责重试。
优 点:CubicWeb 是一种语义 Web 操纵序次框架,正在 LGPL 下取得许可,它使开荒职员或许通过重用组件(称为立方体)并屈从有目共睹的面向对象策画规则来有用地构修 Web 操纵序次。满意常睹需求的可重用组件(数据模子和视图)库,Python 编程言语的壮健功效和精巧性,用于存储后端的 SQL 数据库、LDAP 目次、Subversion 和 Mercurial 的牢靠性。
缺 点:要正在 CubicWeb 操纵序次中获取或操作历久数据,能够操纵干系查问言语(RQL),RQL 供给了一种高度分别的途途来互相相闭各样数据源。然而,跟着它的竣工,通过手动构修查问动作字符串,它能够会让风气于 ORM 的开荒职员感应过期。操纵 CubicWeb 又有其他停滞。起首,修树能够很障碍。另一个潜正在的题目是贫乏本机模板引擎;天生 HTML 留给开荒职员。CubicWeb 增援 Python 3,但 Twisted 等模块自己并未全部移植。
优 点:Zope 2 是一款基于 Python 的 Web 操纵框架,是完全 Python Web 操纵序次、东西的开山祖师,是 Python 家族一个强有力的分支。Zope 2 的 “对象宣布” 体例绝顶适合面向对象开荒伎俩,而且能够减轻开荒者的进修弧线,还能够助助你创造操纵序次里少许欠好的功效。
缺 点:Zope 不对用于粗略的 RESTful API(每 Bottle 或 Flask),乃至不对用于具有交互性的根本网站(à la Django),因为 Zope 的尺寸和庞杂性,装配必要少许事业;这不是粗略地将源解压缩到项目子文献夹中的题目。
优 点:Web2py 是一个用 Python 言语编写的免费的开源 Web 框架,旨正在麻利迅疾的开荒 Web 操纵,具有迅疾、可扩展、安详以及可移植的数据库驱动的操纵,屈从 LGPLv3 开源订交。Web2py 供给一站式的处理计划,统统开荒历程都能够正在浏览器进步行,供给了 Web 版的正在线开荒,HTML 模版编写,静态文献的上传,数据库的编写的功效。其它的又有日记功效,以及一个自愿化的 admin 接口。
缺 点:Web2py 的一个首要局部是它仅与 Python 2.x 兼容。起首,这意味着 Web2py 无法操纵 Python 3 的异步语法。要是你依赖于 Python 3 独有的外部库,那么你就不交运了。然而,正正在展开使 Web2py Python 3 兼容的事业,而且正在撰写本文时它已挨近告竣
缺 点:Pylons 已与 repoze.bfg 团结,现正在处于仅爱护形式。剧烈倡议新项目从新团结的 Web 框架金字塔最先。
优 点:Cubes 是一个轻量级的 Python 框架和东西集,用于开荒告诉和解析操纵序次、正在线解析管理 (OLAP)、众维解析和浏览集结数据。它是 Data Brewery 的一个别。
过失:不再为每个众维数据集供给隐式集结 record_count。它必需精确界说为集结:旧的后端架构是有局部的。它只愿意操纵一个商铺,必需正在供职器启动之前显露模子,不行够从长途原因获取模子。
优 点:DPark 是 Spark 的 Python 克隆版本,是一个 Python 竣工的分散式策动框架,能够绝顶轻易地竣工大周围数据管理和低延时的迭代策动。该策动框架相仿于 MapReduce,然而比其更精巧,能够用 Python 绝顶轻易地举行分散式策动,而且供给了更众的功效,以便更好地举行迭代式策动。DPark 由邦内的豆瓣公司开荒竣工和认真爱护,据豆瓣公司的刻画,目前豆瓣公司内部的绝大无数数据解析都操纵 DPark 告竣,统统项目也正趋于完备。
dkl88191。加的时分备注一下:磋议偏向 +学校/公司+知乎,即可。然后就能够拉你进群了。