当前位置: 首页 > article >正文

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项目

http://www.kler.cn/a/108795.html

相关文章:

  • 十五、Linux线程(二)
  • openresty入门教程:init_by_lua_block
  • 如何处理模型的过拟合和欠拟合问题
  • TIOBE 编程指数 11 月排行榜公布 VB.Net第九
  • 【复平面】-复数相乘的几何性质
  • 【51单片机】UART串口通信原理 + 使用
  • css-表格样式
  • 【Java 进阶篇】解决Java Web应用中请求参数中文乱码问题
  • Python Wordcloud报错:Only supported for TrueType fonts,多种解决方案
  • 97. 交错字符串
  • Go学习第十二章——Go反射与TCP编程
  • 如何使用drawio画流程图以及导入导出
  • 微服务parent工程和子工程pom文件配置注意
  • 基于Qt 文本读写(QFile/QTextStream/QDataStream)实现
  • C++编程题目------平面上的最接近点对(分治算法)
  • C++设计模式_13_Flyweight享元模式
  • 漏洞复现-showdoc文件上传_v2.8.3_(CNVD-2020-26585)
  • Python环境下LaTeX数学公式转图像方案调研与探讨
  • 【大数据Hive】hive 表数据优化使用详解
  • 西工大CSAPP第二章课后题2.55答案及解析
  • 什么是程序化交易
  • 计算机网络--第一次作业
  • C51--PWN-舵机控制
  • 直线模组怎么分类?
  • 在JS中,var 、let 、const 总结
  • ENSP L2TP 配置