Web框架的作用与优势:为什么网站开发离不开Web框架
问:Web 框架到底是什么?

A:Web框架主要用于网站开发。开发人员基于Web框架实现自己的业务逻辑。 Web框架实现了许多功能并提供了实现业务逻辑的通用方法。
问:Web框架的作用是什么?
A:使用Web框架,业务逻辑以外的很多功能不需要自己去完善。相反,您可以使用框架的现有功能。 Web框架减少了开发网站时的工作量。
问:为什么要使用Web框架?
A:Web框架主要用于网站开发,可以实现数据交互,完善业务功能。使用Web框架进行网站开发时,您不需要自己在数据缓存、数据库访问、数据安全验证等方面重新实现,只需将业务逻辑相关的代码编写到框架中即可。
图书馆排序基于用户数量和文档活动。
Django框架
官方网站:
优点:是一个高级的Python Web开发框架,特点是开发速度快、代码量少、可扩展性强。 Django 使用 MTV(模型、模板、视图)模型来组织资源。该框架功能丰富,模板扩展选项最多。对于专业人士来说,Django 无疑是 Python 排名第一的 Web 开发框架。
缺点:包含了一些轻量级应用不需要的功能模块,不如Flask轻量级。许多类和方法的过度封装使得它们更容易直接使用,但更难以更改。与C和C++性能相比,Djang性能较低。模板实现了代码和风格的完全分离,并且不允许Python代码出现在模板中,不够灵活。此外,学习曲线也比较陡峭。
Flask框架
官网:优点:Flask是一个Python Web开发的微型框架。严格来说,它只提供Web服务器支持,不提供全栈开发支持。然而,Flask 非常轻量且简单。基于它构建一个Web系统只需几分钟,特别适合小型和微型原型系统的开发。花费更少的时间并生产出可用的系统是一个非常具有成本效益的选择。
缺点:对于大型网站开发,需要设计路由映射规则,否则代码会比较混乱。对于新手来说,使用低质量的代码很容易创建“糟糕的 Web 应用程序”。
金字塔框架
官方网站:
优点:是一个高度可扩展且灵活的Python Web开发框架。上手非常简单,更适合开发设计同时进行的中型场景。 Pyramid没有提供绝对严格的框架定义,可以根据需要进行扩展和开发,对高级程序员非常友好。
缺点:在国内知名度不高。对于高级使用,需要从阅读源代码中获得灵感。默认使用 Chameleon 模板,灵活性不是一个因素。
web.py 框架
官方网站:
优点:顾名思义,web.py是一个使用Python作为开发语言的Web框架,简单而强大。俄罗斯第一的Yandex搜索引擎就是基于这个框架开发的。 Guido van Rossum 认为这是最好的 Python Web 框架。还需要说什么吗?有事实证明,有专家认可,就用吧!
缺点:Web.py 不像其他框架那样与 Python 3 兼容。这不仅意味着缺乏对异步语法的支持,还意味着不推荐使用的函数存在错误。此外,尚不清楚维护者是否计划在 Python 2 支持生命周期结束后使 Web.py 保持最新状态。
龙卷风框架
官方网站:
优点:Tornado是一个基于异步网络函数库的Web开发框架。因此,可以支持数万个开放连接,Web服务高效稳定。可见Tornado适合高并发场景下的Web系统。开发过程需要使用Tornado提供的框架,灵活性较差。确定场景后再考虑使用也不晚。
缺点:Tornado 5.0 改进了与 Python 原生异步功能的集成。因此不再支持 Python 3.3,Python 3.5 用户必须使用 Python 3.5.2 或更高版本。 Tornado 6.0 将需要 Python 3.5 及更高版本,并将完全放弃对 Python 2 的支持。
TurboGears框架
官方网站:
优点:最新版本的TurboGears试图解决原版TurboGears、Django、Rails等框架的缺点。它支持多种数据库、JavaScript工具集、多种数据交换格式等,当然,它的开发效率非常高,可扩展性也很高。它和 Django 哪个更好?真的很难说。或许更重要的是 Django 社区更加活跃。
缺点:TurboGears 的一些缺点包括基本的管理功能、很少的第三方应用程序和基本的文档。 TurboGears 面临的一大挑战是它的压倒性。由于它与其他组件混合时提供了无限的灵活性,因此在尝试决定完成任务的路径时过于复杂。
CherryPy框架
官方网站:
优点:CherryPy允许开发人员基于与其他面向对象程序类似的设计方法,使用最少的代码和最简洁的方式来开发Web系统。 CherryPy已经开发了10年,具有良好的稳定性。非常适合小型Web系统和纯Python程序员。你有什么感觉? Python有称霸世界的潜力!让我们拭目以待。
缺点:除了提供网页所需的最少内容外,它应该尽可能地让人感觉不太像“Web 框架”,而更像任何其他类型的 Python 应用程序。 CherryPy 包含用作低级构建块的位。包括会话标识符和 cookie 处理,但不包括 HTML 模板。与 Bottle 一样,CherryPy 提供了一种将路由映射到磁盘上的目录以提供静态文件的方法。
猎鹰框架
官方网站:
优点:Falcon是一个Web开发框架,支持大规模微服务API或移动App后端响应。它完全基于Python,提供非常高的性能、可靠性和可扩展性。猎鹰定位独特,特色鲜明。对于应用程序开发人员来说,在构建后端系统时可能需要考虑 Falcon。十有八九,你不会后悔的。
缺点:Falcon的缺点是它的封装模块有点太少了,有路由、中间件、钩子,但除此之外不提供其他功能(裸壳)。附加功能,例如验证,需要开发人员开发扩展。因为它被设计用于构建 REST API。
工程师框架
官方网站:
优点:Asgineer 是一种使用尽可能少的抽象来编写异步 Web 应用程序的工具,同时仍然提供友好的 API。阅读指南和参考资料只需几分钟!当在 Uvicorn 上运行 Asgineer 时,它是可用的最快的 Web 框架之一。它支持 http 长轮询、服务器端事件 (SSE) 和 websockets。并拥有以正确(快速)方式服务资产的实用程序。
缺点:缺乏中文文档。
瓶子框架
官方网站:
优点:Bottle 是一个快速、简单且轻量级的 Python WSGI 微 Web 框架。它作为单个文件模块分发,除了 Python 标准库之外没有任何依赖项。支持干净和动态的 URL。快速且 Pythonic 的内置模板引擎,支持 mako、jinja2 和 cheetah 模板。提供对表单数据、文件上传、cookie、标头和其他 HTTP 相关元数据的轻松访问。
缺点:瓶子 极简主义的后果之一是某些功能根本不存在。不支持表单验证,包括 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等那样处理异步请求,无论如何,它仍然具有非常好的性能。
黑羊框架
官方网站:
优点:BlackSheep 是一个异步 Web 框架,用于使用 Python 构建基于事件的 Web 应用程序。它的灵感来自 Flask、ASP.NET Core 和 Yury Selivanov 的工作。
缺点:缺乏中文文档。
Index.py框架
官方网站:
优点:实现了ASGI3接口,并使用Radix Tree进行路由查找。它是最快的 Python Web 框架之一。所有功能都服务于高性能Web服务的快速开发。拥有大量正确的类型注释,灵活高效的路由系统,可视化API接口和在线调试,支持Server发送事件和WebSocket,自带一键部署命令(基于uvicorn和gunicorn),可以使用任何可用的 ASGI 生态系统。
缺点:Index.py没有内置数据库、缓存等功能。如果您难以选择,请直接使用Django。
Sanic框架
官方网站:
优点:Sanic 是一个 Python 3.7+ Web 服务器和 Web 框架,编写速度很快。它允许使用 Python 3.5 中添加的 async/await 语法,这使您的代码非阻塞且快速。该项目的目标是提供一种简单的方法来启动和运行易于构建、扩展和最终扩展的高性能 HTTP 服务器。
缺点:Sanic 在功能方面模仿 Flask,例如通过共享蓝图的概念,蓝图是微型子应用程序,允许开发人员在更大的应用程序中拆分和组织代码。对于只增删改查数据的CRUD应用来说,Sanic并不是一个好的选择。
星莱特框架
官方网站:
优点:Starlette 是一个轻量级 ASGI 框架/工具包,非常适合构建高性能异步服务,它已做好生产准备,并为您提供以下功能: 令人印象深刻的性能。 WwbSocket 支持。 GraphQL 支持。进程内后台任务。启动和关闭事件。根据请求构建的测试客户端。 CORS、GZip、静态文件、流响应。会话和 cookie 支持。 100% 测试覆盖率。 100% 带注释的代码库。零硬依赖。
缺点:Starlette 提供了所有基本的 Web 微框架功能。但它不提供自动数据验证、序列化或 API 文档。
FastAPI框架
官方网站:
优点:FastAPI 是一个现代、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示使用 Python 3.6+ 构建 API。性能非常高,与 NodeJS 和 Go 相当(感谢 Starlette 和 Pydantic)。可用的最快的 Python 框架之一。将人为(开发人员)引起的错误减少约 40%。简短、简单、直观且强大。
缺点:不自带模板语法,需要安装。
响应者框架
官方网站:
优点:是kennethreitz新开发的项目。它是一个基于Python的HTTP服务框架。底层采用Starlette框架。 Starlette 是一个轻量级的 ASGI 框架/工具包。 Starlette可用于构建高性能异步IO服务。与 Starlette 相比,responder 对开发者更加友好。 kennethreitz 编写了名为“HTTP for Humans”的请求来使这一点更加清晰。事实上,相比之下,Responder 比 Starlette 优雅得多。
缺点:可能是新项目,包装还不够完善。截至当前版本,某些代码尚未正常工作。不过接口形式已经定义,预计会在后续版本中添加。
熔炼框架
官方网站:
优点:Molten 是一个最小的、可扩展的、快速且高效的框架,用于使用 Python 构建 HTTP API。程序自动验证请求,并且代码更易于维护。实例可自动序列化,包含 API 在现实世界中通常需要的功能类型,并广泛使用 PEP484 类型提示和 mypy。
缺点:它不使用像 Pydantic 这样的第三方库来提供数据验证、序列化和文档,它有自己的库。因此,这些数据类型定义将不太容易重用。依赖注入系统需要预先注册依赖项,并根据声明的类型解析依赖项。因此,不可能声明多个组件来提供特定类型。
弹性框架
官方网站:
优点:一个强大的 Python Web 框架,可以简化显式开发实践,同时消除全局状态。 Clastic 完全用 Python 编写,具有增强的可重用性和可测试性、主动 URL 路由检查、更好地控制应用程序初始化、改进的中间件范例、无全局状态、ORM 使用以及更轻松的 WSGI 集成。
缺点:Clastic 不构建全局状态; URL 路由规则参数和视图函数签名不匹配。在 Clastic 中,这种不匹配会在构建应用程序时导致异常。