为什么越来越多的 Python 开发者选择使用其他框架替代 Django?

Django社区现状

Django 是非常流行的 Python Web 结构,被世界各地被许多大型企业以及安排选用,但也遇到了多数大型开源项目难以避免的问题:活泼贡献者流失,新贡献者供不应求。James Bennett 说到,不少开源项目依靠企业支撑来解决此类问题,借由企业员工协助保护项目以确保持续发展。Django 前期也是以这样的方式生存,遗憾的是,终究没有发展成长时间模式。这也意味着 Django 现在彻底依托的是没有酬劳的贡献者,并现已开端供不应求。

Django 的优点

最大优势,Python,Python 的库实在是太多太好用了,和机器学习、数据剖析以及批处理作业契合度太高,使得任何一个 Python 库都可以在 Django 的结构内以一种插件或许模块的方式存在。

学习成本低,咱们团队0根底的运维同事,最多 2 个周就能上手写 view 了,这和 Python 自身编程简易有很大联系,更重要的是 Django 自己是一套完好的体系,有自己连接的逻辑很适合长时间应试教育下的学生学习,而不是像 Java 那种开发式的得东补一块西凑一片的才干把整个主流体系都学会。

开发成本低,在短少前端工程师的情况下,Django 的模板体系和办理站点简直是大多数小体系小项目的救星,HTML 和简单的语法就能解决问题,从时间和金钱上双重节省成本,这种特点也是它的巨大优势。

Django 的缺陷

  • 它实在是太重型了,有自己的一套原则,集成了许多的功用,这关于想要有自主知识产权的渠道来说实在是不合适。
  • 它的执行功率很低,尤其是运用自带的模板体系的时分,烘托那种大型页面要数秒,当你运用 import-export 库进行导入的时分,那个预览页面有时分都能耗时数分钟才干烘托完。
  • 跟着开发越来越多的模块,整个项目变得非常的臃肿,许多功用是逐步更新的,可是旧的代码却一向留存,导致了许多无用代码的存在,虚拟化 docker 打包后的镜像非常的大。这关于许多开发者来说,是非常不友好的。

双刃剑

为什么越来越多的 Python 开发者选择使用其他框架替代 Django?

  • 强制要求联系型数据库,尽管说也能有库支撑非联系型数据库,可是总得来说还是要求联系型的,这就导致 Django 关于数据的结构化程度要求很高,数据之间要有明晰的逻辑联系。但优点也是很明显的,逻辑紧密,根本不会出错误。
  • 程序结构非常明晰,可是有些模块是用不着的,就会发生资源糟蹋
  • Python 依靠库支撑强壮,但也相同的,有些依靠库需求咱们去花时间成原本研讨更好的运用

Django 行业运用现状

在过去的几年里,Django 一向是 Python Web 开发中最受欢迎的结构之一。可是,在一些新式的技能趋势的推进下,包含异步编程、无服务架构和机器学习等,有越来越多的开发者开端挑选替换 Django 为其他结构。

以下是导致开发人员逐渐挑选运用其他结构的一些原因:

Django 的功能问题:尽管 Django 在开发功率和功用丰厚性方面表现出色,但在高并发、低推迟运用场景下,Django 的功能依然不太够用。这主要是由于 Django 选用的同步编程模式,在高并发场景下无法充分地利用 CPU 资源。

异步编程需求:跟着异步编程的遍及和丰厚,越来越多的运用场景需求异步编程来进步吞吐量和呼应功能。然而,Django 自身并没有供给支撑异步编程的功用,需求依靠第三方库或其他结构进行支撑。

Django ORM 的缺陷:Django 内置的 ORM(目标联系映射)功用尽管运用方便,但功能不尽如人意。而许多新式的 Python 运用结构,比如 FastAPI 和 Flask 等,选用了一些新式的 ORM 技能,比如 Pydantic 和 SQLALChemy 等。这些新技能可以更好地支撑异步编程。此外,这些结构也具有更灵活的 SQL 查询方式,更好的安全性和功能。

后端别离需求:越来越多的 Web 开发人员需求将前后端别离,运用一些 JavaScript 库和结构开发前端,并且运用 API 来与后端进行通信。在这种情况下,运用 Django 可能比较繁琐,而许多新式的 Python Web 运用结构,如 FastAPI 等具有支撑 API 开发的功用,可以愈加轻松地实现前后端别离。

在总体上,Django 依然是一个强壮、功用丰厚的 Web 运用结构,可以协助开发人员快速开发 Web 运用。然而,跟着一些新式技能的遍及和需求的变化,一些开发者开端转向运用其他结构,以满意更强的功能、更好的异步编程支撑、新式 ORM 技能、前后端别离等需求。

关于现在的敏捷开发来说,咱们需求更快的结构来集成更快的开发,来愈加友好的给用户愈加明晰的 API 展现。 更快的前后端交互,关于后端来说,只需求进步标准化的 API 接口即可,尤其是能协助做好数据校验,这对前端来说是个好事,也让开发作业变得简单和功率起来。

咱们的追求是:更高、更快、更强。