Django框架官网:优点与缺点兼具的Python Web开发框架
1. Django 框架

官 网:
优点在于它是一个高层次的 Python Web 开发框架。其特点为开发速度快,所需代码较少,且可扩展性强。Django 是以 MTV(Model、Template、View)模型来组织资源的,该框架的功能丰富,在模板扩展方面的选择最多。专业人员认为,Django 在 Python 的 Web 开发框架中排名第一,这是当之无愧的。
缺点:存在一些轻量级应用无需的功能模块,在轻便性方面不如 Flask。对很多类和方法进行了过度封装,直接使用较为简单,但改动起来较为困难。与 C、C++的性能相比,Djang 的性能偏低。模板实现了代码与样式的完全分离,不允许在模板中出现 Python 代码,灵活度欠佳。此外,其学习曲线也相对较陡。
2. Flask 框架
官 网:
优点:Flask 是用于 Python Web 开发的微框架。严格来讲,它仅给予 Web 服务器方面的支持,而不提供全栈开发的支持。不过,Flask 很轻量且非常简单,基于它来搭建 Web 系统所用时间是以分钟来计算的,特别适宜小微原型系统的开发。花费较少时间就能产出可用系统,这是很划算的一种选择。
缺点在于,在进行大型网站开发时,需要设计路由映射的规则,不然就会致使代码变得混乱。对于新手而言,他们很容易使用低质量的代码来创建出“不良的 web 应用程序”。
3. Pyramid 框架
官 网:
优点在于它是一个扩展性很强并且很灵活的 Python Web 开发框架。它上手非常容易,比较适宜中等规模并且边开发边设计的场景。Pyramid 不给予绝对严格的框架定义,能够根据需求进行扩展开发,对高阶程序员十分友善。
缺点:在国内的知名度不算高。想要获取高级用法的灵感,需要通过阅读源代码。它默认使用 Chameleon 模板,并且灵活度并未成为一个重要的要素。
4. web.py 框架
官 网:
优点:它如其名,web.py 是一个以 Python 作为开发语言的 Web 框架,具备简单且强大的特点。俄罗斯排名第一的 Yandex 搜索引擎是基于这个框架开发的。Guido van Rossum 认为它是最好的 Python Web 框架。还需要再说其他的吗?有事实作为证明,有大牛给予认可,那就用起来吧!
缺点:Web.py 与其他框架不同,它没有保持与 Python 3 兼容性的最新状态。这意味着它缺乏对异步语法的支持,同时也缺少对已弃用函数的错误处理。此外,目前还不清楚维护者是否计划在 Python 2 结束其支持生命周期后继续保持 Web.py 的最新状态。
5. Tornado 框架
官 网:
确定场景后再考虑使用 Tornado 不迟。
它将完全放弃对 Python 2 的支持。
6. TurboGears 框架
官 网:
优点:TurboGears 的最新版本努力去解决 TurboGears 的最初版本以及 Django、Rails 等框架所存在的缺陷。它具备支持多数据库的功能,还有 JavaScript 工具集,并且支持多种数据交换格式等。同时,它在开发过程中效率极高,扩展性也很强。那么,它与 Django 相比,究竟哪个更好呢?还真不好说,Django 社区更为活跃或许更重要。
所以在试图决定采用何种路径来完成一个任务时,它会显得过于复杂。
7. CherryPy 框架
官 网:
优点:CherryPy 能让开发者依据与其他面向对象程序类似的设计方法来开发 Web 系统,从而以最少的代码和最简洁的方式进行开发。CherryPy 已历经 10 年的开发,稳定性较为良好,很适合小规模的 Web 系统以及纯粹的 Python 程序员。能感受到什么呢?Python 似乎有一统江湖的趋势!让我们拭目以待。
缺点:它仅包含为 web 页面提供服务所需的少量内容。它应尽可能让人感觉不像“web 框架”,而更像其他类型的 Python 应用程序。CherryPy 包含的部分可作为低级构建块,其中包括会话标识符和 cookie 处理,但不包括 HTML 模板。Bottle 提供了一种方式,CherryPy 也提供了类似的方式。这种方式是将路由映射到磁盘上的目录,以便为静态文件提供服务。
8. Falcon 框架
官 网:
优点:Falcon 是一个能支持大规模微服务 API 或移动 App 后端响应的 Web 开发框架。它完全以 Python 为基础,具备极高的性能、可靠性与可扩展性。Falcon 的定位独特且特色鲜明,对于 App 开发者来说,在构建后端系统时不妨考虑 Falcon,这样做十有八九是不会后悔的。
Falcon 的缺点在于它的打包模块相对较少,具备路由、中间件、钩子等功能,除此之外便不再提供其他功能(仅为裸壳状态)。像验证等额外的其他功能,都需要开发人员进行开发扩展。这是因为其设计中假定用于构建 REST API。
9. Asgineer 框架
官 网:
优点:Asgineer 是用于编写异步 Web 应用程序的工具,它采用尽可能少的抽象,并且还能提供友好的 API。阅读其指南和参考资料只需几分钟!在 Uvicorn 上运行 Asgineer 时,它属于可用的最快的 Web 框架之列。它支持 http 长轮询。它支持服务器端事件 (SSE)。它支持 websockets。并且它具有能以正确(且快速)的方式为资产提供服务的实用程序。
缺 点:中文文档匮乏。
10. Bottle 框架
官 网:
优点:Bottle 是用于 Python 的一种框架。它具有快速的特点。它也很简单。并且是轻量级的 WSGI 微型网络框架。它以单个文件模块的形式进行分发。它除了 Python 标准库之外没有其他依赖项。它支持干净的 URL 以及动态的 URL。它有快速且 Pythonic 的内置模板引擎。该引擎支持 mako 模板、jinja2 模板和 cheetah 模板。能够便捷地对表单数据进行访问,能够进行文件上传,能够获取 cookie,能够获取标题,还能够获取其他与 HTTP 相关的元数据。
Bottle 极简主义带来的一个后果是某些功能不存在。它不支持表单验证,像 CSRF 保护这类功能也没有。若要构建能高度支持用户交互的 Web 应用程序,就需要自己去添加这些功能。
11. Emmett 框架
官 网:
优点在于能够编写优雅的代码,让你可以专注于自己的产品。你应该把更多时间放在产品上,而不是底层框架上。Emmett 是为发明家设计的框架,因为它的目的是简化你的开发过程,其语法简单,易于学习和理解。不要在路由器和不舒服的模式上浪费时间,每次为应用程序写下路由时,一切都能清晰地呈现在你眼前。
缺 点:中文文档匮乏。
12. apidaora 框架
官 网:
- 能够在任何 ASGI 服务器上运行。
缺 点:中文文档匮乏。
13. Quixote框架
官 网:
优点:Quixote 是一个以 Python 编写的基于 Web 的应用程序框架。它的目标是依次实现灵活性与高性能。Quixote 应用程序的结构通常类似传统应用程序。格式化网页的逻辑由 Python 的类和函数构成。Quixote 不会强制将表示逻辑与“后端”逻辑分离。我们鼓励您使用传统技术。比如,有一种解决方案是把表示逻辑放置在它自己的子包内。
缺点:Quixote 得到了积极的维护,然而它的发布频率比较低。最近的开发重点在于修复错误,提升标准合规性,以及增加 Quixote 的灵活性。
14. reahl 框架
官 网:
优点:reahl 是一个开放框架,能够让开发者完全用 Python 语言来编写 Web 应用。其最大特色是采用 Python 作为唯一的开发语言。并且,reahl 提供了开发组建,这些组建相当清晰且简明,对于开发一般功能性的 Web 系统来说,是足够清晰且可行的。
缺点在于,在提供抽象词汇时,无法掌控一些更为高级的用户界面效果。同时,目前不具备使用 Sass 来构建 Bootstrap 的修改版本的能力,也无法支持更高级的用户界面模式。
15. hug 框架
官 网:
这就是该框架被称为 Python 3 中最快的框架之一的主要原因。
它使用以前的 WSGI 标准,WSGI 标准是一个同步框架。所以它无法处理像 WebSockets 以及其他异步请求。尽管如此,它依然有着非常好的性能表现。
16. BlackSheep 框架
官 网:
优点:BlackSheep 是一个异步 Web 框架。它可用于使用 Python 构建基于事件的 Web 应用程序。它的灵感来源于 Flask、ASP.NET Core 以及 Yury Selivanov 的工作。
缺点:中文文档匮乏。
17. Index.py 框架
官 网:
优点在于实现了 ASGI3 接口,并且利用 Radix Tree 来进行路由查找。它是较为快速的 Python web 框架之一。所有的特性都是为了能够快速开发出高性能的 Web 服务而服务的。有大量正确的类型注释,路由系统灵活且高效,有可视化的 API 接口以及在线调试功能,既支持 Server-sent events 又支持 WebSocket,自带一键部署命令,这个命令是基于 uvicorn 与 gunicorn 的,还可以使用任何可用的 ASGI 生态。
缺点在于 Index.py 自身并未内置数据库以及缓存等其他相关功能。对于那些存在选择困难的人,建议直接使用 Django 。
18. Sanic 框架
官 网:
优点:Sanic 是一个用于 Python 3.7 及以上版本的 web 服务器和 web 框架。它的编写速度较为迅速。它具备能够使用 Python 3.5 中新增的 async/await 语法的特性,这使得您的代码不会被阻塞,并且运行速度较快。该项目的目标是提供一种方法,这种方法很简单。它可以用来启动和运行一个高性能的 HTTP 服务器。这个服务器易于构建,也易于扩展,并且最终能够进行扩展。
Sanic 在功能方面模仿 Flask,它通过共享 Blueprints 的概念以及微小的子应用程序,能让开发人员在更大的应用程序中拆分和组织代码。然而,对于仅仅是数据增删改查(CRUD)的应用来说,Sanic 不是一个好的选择。
19. Starlette 框架
官 网:
优点:Starlette 是一个轻量级的 ASGI 框架或工具包。它非常适合构建性能异步服务,且是生产就绪的。它能为您提供以下内容:表现令人印象深刻;支持 WebSocket;支持 GraphQL;具备进程内后台任务;有启动和关闭事件;有基于请求构建的测试客户端;支持 CORS、GZip、静态文件、流响应。支持会话和 Cookie。测试覆盖率达到 100%。代码库具有 100%的类型注释。没有硬性依赖。
它不提供 API 文档。
20. Fastapi 框架
官 网:
优点:FastAPI 是一个现代的 Web 框架,其性能快速(高性能)。它可用于基于标准 Python 类型提示,用 Python 3.6+来构建 API。它的性能非常高,能与 NodeJS 和 Go 相媲美(这得益于 Starlette 和 Pydantic)。它是可用的最快的 Python 框架之一。减少大概 40%的由人为(开发人员)导致的错误。此特点为简短、简单、直观且健壮。
缺 点:本身不带模板语法,需要安装模板语法
21. Responder 框架
官 网:
优点:是 kennethreitz 新开发的一个项目,其是基于 Python 的 HTTP 服务框架。底层采用了 Starlette 框架,Starlette 是一款轻量级的 ASGI 框架/工具包,能够用它构建高性能的异步 IO 服务。Starlette 相比之下,responder 对开发者更友好一些。Kennethreitz 撰写的 requests 号称“HTTP for Humans”,这更能体现出这种友好。实际上对比来看,responder 比 Starlette 要优雅得多。
缺点:有新项目的情况,打包方面还不够完善。就当前版本来看,部分代码无法正常运行。不过接口形式已经确定好了,期待后续版本能够将其补充完整。
22. Molten 框架
官 网:
优点:Molten 是一个框架,它具有最小、可扩展、快速和高效的特点,可用于用 Python 构建 HTTP API。它计划能自动验证请求,使得代码更易于维护。实例能够自动序列化,包含了 API 在现实世界中通常所要求的各种功能,并且广泛使用 PEP484 类型提示和 mypy。
缺点:它未使用像第三方库(如 Pydantic)那样提供数据验证、序列化和文档的功能,它有自己的库。所以,这些数据类型定义不太容易被复用。依赖注入系统需要预先注册依赖项,并且会基于已声明的类型来解决依赖问题。因此,无法声明多个组件来提供特定的类型。
23. Clastic 框架
官 网:
优点:它是一个功能强大的 Python Web 框架,能够简化显式开发实践,并且可以消除全局状态。Clastic 是完全由 Python 语言编写的,这增强了可重用性和可测试性。它具有主动的 URL 路由检查功能,能更好地控制应用程序的初始化。还拥有改进的中间件范例,不存在全局状态,有 ORM 用法,并且更容易进行 WSGI 集成。
缺点:Clastic 无法构建全局状态;在 Clastic 里,URL 路由规则参数与视图函数签名不匹配,这种不匹配会在构建应用程序时导致异常出现。