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 打包后的镜像非常的大。这对于很多开发者来说,是非常不友好的。

双刃剑

强制要求关系型数据库,虽然说也能有库支持非关系型数据库,但是总得来说还是要求关系型的,这就导致 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 接口即可,尤其是能帮助做好数据校验,这对前端来说是个好事,也让开发工作变得简单和效率起来。

作者:有追求的开发者
来源:稀土掘金

THE END