pythonWeb主流框架分析

什么是web框架?

Web 框架主要用于网站开发。开发者在基于 Web 框架实现自己的业务逻辑。Web 框架实现了很多功能,为实现业务逻辑提供了一套通用方法。

使用 Web 框架,很多的业务逻辑外的功能不需要自己再去完善,而是使用框架已有的功能就可以。Web 框架使得在进行 网站开发的时候,减少了工作量

Web 框架主要用于网站开发,可以实现数据的交互和业务功能的完善。使用 Web 框架进行 网站开发的时候,在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以。

常见的pythonWeb框架有哪些?

Django

优点:

  • 具备全面的功能,包括ORM、模板引擎、路由、管理后台等,使用者只需要集中精力编写业务代码。
  • 强大的自带管理后台,可快速构建管理界面。
  • 可以与大多数关系型数据库集成,并有良好的ORM,通过ORM可以快速的构建和维护数据库表数据。
  • Django提供的许多插件可以在开发Web应用程序时加速开发流程。
  • 完善的文档与社区,拥有众多优秀的插件、模块等。

缺点:

  • 重量级框架,包括一些轻量级应用不需要的功能模块,不如 Flask 轻便。
  • 过度封装很多类和方法,直接使用比较简单,但改动起来比较困难。
  • 相比于 C,C++ 性能,Djang 性能偏低。
  • 对异步IO的支持不够好

Flask

优 点:

  • 轻量级。提供 Web 服务器支持,不提供全栈开发支持。Flask 非常轻量、非常简单,基于它搭建 Web 系统都以分钟来计时,特别适合小微原型系统的开发
  • 可以使用自己选择的数据库和ORM,也可以灵活使用不同的扩展包实现不同的功能。
  • 相对其他框架,API的开发速度更快,而且请求速度更快。

花少时间、产生可用系统,使用Flask是非常划算的选择。

缺 点:

  • 无自带管理后台,所有的内容都需要从0开始进行构建。
  • 对于大型网站开发,需要设计路由映射的规则,否则容易导致代码混乱。对新手来说,容易使用低质量的代码创建 "不良的 web 应用程序"。

FastAPI

优点:

  • 强大的数据验证器,使用Pydantic库,可以自动生成API数据结构。
  • 异步请求中的高性能和低延迟,使用异步处理程序可提高API性能。
  • 快速的文档生成器,可为其定义的API自动生成完整的文档。
  • 集成模型构建器和Builtin SQL数据库(SQLAlchemy)。

缺点:

  • 相对于其他两者,自带功能较少,需要获取第三方库来实现某些功能。
  • 安全性问题(由于自动文档,API发现功能可能会导致潜在的安全漏洞)。

Tornado

优 点:

  • 基于异步网络功能 库的 Web 开发框架,因此,它能支持几万个开放连接,Web 服务高效稳定。可见,Tornado 适合高并发场景下的 Web 系统。

缺 点:

  • 不支持python2
  • 灵活性较差

除此之外,还有各类python框架,但都大同小异。

总体来看

  • Django 属于重量级框架,内置模块较为丰富,适用于中大型项目
  • Flask 属于轻量级框架,仅提供最基本的web服务,适用于小微项目
  • FastAPI 属于轻量级框架,如果需要构建一个快速高效性能的API,以支持多用户的请求,那么使用FastAPI是更好的选择
  • Tornado 属于专业性框架, 为应对高并发场景而生,适用于对于高并发有需求的python项目
相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
A__tao5 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢5 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏4945 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
明日清晨6 小时前
python扫码登录dy
开发语言·python
bazhange6 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
人工干智能6 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
unicrom_深圳市由你创科技6 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
小敬爱吃饭6 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
宸津-代码粉碎机7 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python