2021年Django Web开发框架依然值得选择吗?

好文推荐,原作:Łukasz Michalak,2020年7月发表于10Clouds,大江狗原创翻译。

Django已经15岁了!我们中许多已经工作多年的人几乎无法相信它的年龄。基于Python的Web框架于2005年7月首次发布,自诞生之日起,技术界就已经发生了翻天覆地的变化。但是Django现在处于脾气暴躁的少年时代,处于黄金时代,还是已经进入了老年期?也许主要的问题是在2021年学习Django开发是否仍然有意义,在未来Django能否还能成为你app开发的首选技术?在此博客文章中,我们将深入研究Web开发技术的演变,并讨论Django框架的所有优点和缺点。

Django的演变

Django出生时的生活是什么样子的?一个有趣的事实是Django是以爵士乐吉他手Django Reinhardt的名字命名的。早在2005年该语言诞生时,在服务器端渲染html和使用jquery是主流Web开发技术。与当时流行的PHP语言相比,使用Django是一种乐趣。Django的ORM与Forms, 验证和模板引擎很好地集成在一起,从而快速开发网页。

该框架正式发布三年后,成立了Django Software Foundation,以促进,支持和改进该框架。自成立以来,该基金会通过赞助和各种会议,在整个开发人员社区中推广Django,保护其知识产权和长期生存能力,并总体上促进其进步和创新,并为Django的更新提供了持续的动力。

进入Django REST Framework的时代

在整个2000年代初期,单页Web应用程序以及从后端提供给网站和移动设备应用接口(API)的开发模式变得越来越流行。在这里Django REST Framework提供一个很好的解决方案。这是一个具有模块化和可自定义体系结构的开源,灵活且功能齐全的库。它带来了许多好处,包括:

  • 易于使用,灵活性,已重复测试过的高质量源代码。

  • 一个强大的引擎,可同时用于ORM和非ORM数据源的序列化。

  • CRUD操作的通用类

  • 使用Django基于类的新视图,为资源提供简洁明了的视图。

适应更加异步的世界

在过去的十年中,技术世界变得越来越异步。用户现在期望即时通知和状态更新,公司希望处理来自用户操作或其他事件的大量数据。而这些认为最好通过异步处理来完成:将系统拆分为使用消息传递代理的专用(微)服务,并通过Websocket等渠道与用户进行通信。

这就是Django目前有所欠缺的地方,但是坦率地说,它从来没有打算以这种方式工作来解决这类问题。对于某些更简单的应用,可以使用Celery与django很好地集成并且可以处理一些简单的异步工作。django-channels则可用于websocket,即时消息传递等。它们可能足以满足许多需求,但是随着系统变得越来越复杂,是时候寻找更好的东西了。

2020年Django的主要利弊

与任何技术一样,Django有很多好处,但也有一些缺点(通常取决于您的项目)。我们概述了以下主要内容。

为什么要学习使用Django框架?
  • 易于学习和理解:Django使用Python语言,这是初学者最简单的编程语言之一。因此,开发人员可以利用Python的语法规则,使用干净且可维护的代码在Django中创建应用程序。

  • 核心组件可以胜任工作:Django曾经被称为“framework for professionals with deadlines”,并非毫无道理。从中间件,通过ORM到序列化器和视图集(好的,它们来自DRF,但仍然如此),所有这些组件可以一起使用,以加快开发速度并简化应用程序的代码。

  • 一个庞大而活跃的社区以及广泛的库:许多开发人员说,Django社区是其中最好的东西-因为其中的人们一直在积极努力使其对初学者更友好,并在增加新功能的同时使其稳定。Django允许开发人员在构建任何项目时使用其庞大的库。其中包括上述的Django REST框架(用于构建应用程序编程接口(API))和Django CMS(用于管理网站内容)。

  • 开箱即用的管理后台:Django提供了一个开箱即用的专业,多功能的管理后台。它从您的模型中读取元数据,以提供一个快速的,以模型为中心的界面,受信任的用户可以在其中管理您网站上的内容。

  • 可靠且功能安全的功能:Django的内置安全功能使开发人员能够保护其数字产品免受各种有针对性的安全攻击,包括跨站点脚本编写,SQL注入和跨站点伪造请求。同时,Web框架通过防止与Python编码相关的常见安全性错误来升级Web应用程序的安全性。


Django要注意的事项:

像许多框架一样,Django也有其缺点。下面我们仅概述一些。

  • 对于较小的Web应用程序并不总是那么好:如上所述,Django提供的强大功能使软件工程师更容易以有效的方式开发大型复杂的Web应用程序。但是,当涉及较小的应用程序时,这些附加功能可能会不利于执行。今后,Python开发人员需要探索使用Django时增强小型Web应用程序执行能力的方法。对于小型网站,这可能会导致不必要的加载时间,否则,这些网站可能只在很小的带宽上运行。

  • 它的组件之间有一定的紧密联系:我们已经写了一个事实,即Django具有某些紧密协作的集合组件,这可以带来好处,因为它们可以提高开发效率。但是与此同时,所谓的“ Django Way”可能具有相当严格的限制,以至于如果您不遵守规则,那么实际上可能无法采取不可靠的解决方案来实现所需的某些操作。因此,某些开发人员更喜欢Flask而不是Django。

  • 它不能同时处理多个请求:与许多现代Web框架不同,Django不允许单个进程同时处理多个请求。您需要使用UWSGI或Gunicorn创建足够多的运行django的工作线程来为流量提供服务,这要比node.js或FastAPI之类的解决方案效率低下且资源消耗更多,后者运行事件循环(event loop)并在需要等待时在请求之间切换任何事情,导致更有效地利用资源。

  • 依靠自己的ORM系统:Django提供的ORM系统使开发人员可以更轻松地使用各种数据库并执行常见的数据库操作。由于其他组件已与此ORM集成在一起,因此您也可以基于ORM模型轻松创建CRUD端点,因此也可以加快开发速度。但是,Web框架使用的ORM系统不具有其他广泛使用的ORM系统所提供的强大功能。而且,它不能使开发人员充分利用健壮的Python SQL工具箱,因此,如果您想使用其他ORM(例如SQLAlchemy),因为您的其他服务正在使用它,那么-如果您用不同的替换Django ORM,您将不乏那些你会失去很多东西。

  • 可扩展性:Django会根据需要进行扩展。如今,您只需将应用程序放置在Docker容器中,然后根据需要增加任意数量的服务即可。Django的问题在于容器往往很大,启动Django需要一段时间才能开始接受连接(在AWS Lambda中运行可能不是一个好主意)。与替代方案相比,它可能还会占用更多的资源。在许多情况下,这不是问题,但有时可能会带来一些问题。

Django适合的主要项目

Django提供了许多现成的解决方案和工具,因此最大限度地减少了外部依赖关系并大大加快了开发过程。由于这些原因,它最适合以下开发工作:

  • Web和移动应用程序的API后端

  • 需要抵御网络攻击的高度安全性的应用程序(请参见上面的好处列表)-例如,FinTech数字产品

  • 需要高度自定义的应用-例如社交媒体或游戏网站

  • 您想要在其中集成一定程度的AI的应用-例如污染跟踪器

  • 使用开源软件的应用

以Django为技术开发的热门网站包括:Pinterest,NASA,Spotify和The Guardian。

何时Django不是您的最佳选择?

在某些情况下,Django绝对不是您的最佳选择。以下是一些:

  • 小型,不需要数据库简单的应用程序-对于这种其他框架,例如Flask可能更适合。

  • 无法在单个代码库中构建的非常大的应用程序-在这里您可能希望将您的产品分解为微服务,这些微服务使用不同的框架甚至适用于特定处理的不同编程语言。

  • 当您的团队不熟悉Python时-在这里使用您熟悉的技术会更有意义。


如今,Django的主要替代品有哪些?

无服务器云计算现在很热门。通过云提供商动态管理资源分配,它具有很高的成本效益,因为定价基于消耗的实际资源量而不是预先购买的容量单位。无服务器计算还可以简化将代码部署到生产中的过程,这就是为什么许多程序员都转向它的原因。通过使用您偏爱的云提供商的服务,可以构建整个应用程序:API,数据处理管道,存储等。

另一个关键趋势是异步编程,它实际上已经存在了很长时间,但是近年来,它已被越来越广泛地使用。异步编程允许一个工作单元与主应用程序线程分开运行。使用它有很多好处,例如,提高了应用程序性能和增强了响应能力。JavaScript已经使用了node.js已有一段时间了,在Python世界中还有一些选择:一个稍微生锈的Tornado框架,Python自带asyncio和aio-lib库,Startlette和FastAPI等。最后一个是FastAPI,它确实很有前途,我认为值得研究一下。

2020年及以后的Django

那么我们可以在Django的15年生日演讲中说些什么呢?好的,Django,多年来,您一直快速,透明,安全,通用且灵活,并且为我们带来了一些鼓舞人心的应用程序,这些应用程序今天已被数百万使用。为此,我们感谢您。

确实,马上2021年了,对于大多数用户而言,拥有庞大的社区和大量的免费资源,且经过充分测试的Django框架依然值得选择。

它的父母Python语言在过去几年中的确受到越来越多的欢迎。考虑到这一点,我们可以肯定地说Django将成为未来主流Web开发语言之一。话虽如此,但不要被Django所限。紧跟最新的技术开发和研究替代方案,只有这样,当您的用例需要更多的东西时,您将知道该怎么办。

原文地址:

https://10clouds.com/blog/django-2020

大江狗

2020.12.1

相关阅读

Django的未来在哪里?

Django的应用前景怎么样? 有没有更好的Web框架? 学好Django有没有未来?

Python Web框架哪家强? Django vs Flask深度对比

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值