好文推荐,原作:Ł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提供一个很好的解决方案。这是一个具有模块化和可自定义体系结构的开源,灵活且功能齐全的库。它带来了许多好处,包括:
适应更加异步的世界
在过去的十年中,技术世界变得越来越异步。用户现在期望即时通知和状态更新,公司希望处理来自用户操作或其他事件的大量数据。而这些认为最好通过异步处理来完成:将系统拆分为使用消息传递代理的专用(微)服务,并通过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提供了许多现成的解决方案和工具,因此最大限度地减少了外部依赖关系并大大加快了开发过程。由于这些原因,它最适合以下开发工作:
以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深度对比
从事开发两月有余 一直使用drf 框架进行
django
后端开发,因种种原因及个人懈怠仓促实践开发,对drf框架的原理及多种用法一知半解。今幡然醒悟,浪子回头,重新系统的学习一下drf开发,及结合两月的开发经验和理解。特写笔记,以供自己学习回顾和朋友们参考学习。
1
Django
框架的序列化和反序列化
学习本框架首先要搞清楚,什么是序列化及反序列化,因为序列化是前后端分离框架的核心!
将模型对象转换为json数据 称之为 序列化 后端向前端传数据 (后传前,序列化)
将json转换为模型 称之为 反
一款
Python
语言基于
Django
、Layui、MySQL等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉
选择
、开关按钮、单选按钮、多选按钮、图片裁剪等等一系列个性化、轻量级的组件,是一款真正意义上实现组件化开发的敏捷开发框架。
yum install
python
-y #centos
apt-get install
python
-y #Ubuntu
pkg install
python
-y #termux
二、
django
安装
pip install
django
三、
django
项目开发
django
项目创建
django
-admin startproject mysite #项目名
cd mysite #进
对
Python
工程师来说,Web 开发可以
选择
的框架很多,比如
Django
、Flask、Tornado 等等,而其中
Django
是最全面,也是最受欢迎的,我们熟知的 YouTub...
Python
开发人员有大量的框架可供
选择
来用于他们的Web项目。不过,现在
Django
毫无疑问已成为世界上
Python
开发人员中最流行的Web框架。本w将来谈谈
Python
开发人员为什么喜欢
Django
而不是其他流行的
Python
Web框架,如Flask,Pyramid,Tornado,Bottle,Diesel,Pecan,Falcon等等。
在谈论
Django
之前,让我们先简单了...
开发工具和相关技术
选择
好了系统之后我们开始技术选型,如果大家大学学的比较扎实的话,自行
选择
自己熟悉适合自己的开发语言。
如果不熟,题主的意思不会做,那我就默认属于计算机小白。
那我就推荐一套入门简单,可以快速出成品的技术套件。
1.服务端后台
我们
选择
Python
安装好
Django
之后, 就可以使用
django
-admin.py管理工具来创建一个项目。首先我们来看下
django
-admin.py的命令介绍,在命令行输入
django
-admin.py查看可用的项目管理命令。
Django
url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name,接下来详细介绍这四个参数。正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文后续将以 Nginx 为例。
前语
Python
很火!
Django
是
Python
Web开发很火的开源项目,框架功用较齐全,而且项目也一直都在更新优化,很
值得
一用。现在最新稳定版别是2.0.4,最新的lts版别是1.11。装置能够经过pip就能够装置
django
了:pip install
django
或许pip install
django
==1.11.9 #指定版别创立项目装置完后会有一个
django
-admin的脚本能够创立...
Django
简介
Django
是一种开源的大而且全的Web应用框架,是由
python
语言来编写的。它采用了MVC模式编写。
Django
最初是被开发来用于管理劳伦斯出版集团下的一些以新闻为主内容的网站。一款CMS(内容管理系统)软件。并于 2005
年
7 月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手
Django
Reinhardt 来命名的。
Django
优点
强大的数据库功能
用
python
的类继承,几行代码就可以拥有一个丰富、动态的数据库操作接口(API),如果需要,你
目前大部分人的简历上面都写了熟悉ssh框架,尤其是刚才学校走出来或者刚从培训机构出来的学生。但是学校讲的
Java
都是按照教科书来讲,教科书更新速度慢,赶不上互联网发展的速度,一般讲的都是几
年
前流行的技术。这个时候学生就需要自学,那么自学的教程就来源于网上的各种培训机构,有些大型培训机构技术更新还不错,赶上互联网的步伐。但是有些小培训机构,没有那么强的师资力量,这个时候就比较坑爹了,对于完...
Python
是2020
年
第三大最受欢迎的
编程语言
。它是一种功能强大的,动态的,语法简化的
编程语言
,用于高级Web应用程序开发和机器学习应用程序。而且,如果您了解
Python
,那么您可能听说过
Django
Web框架-最常用的
Python
框架。
Django
的开发由于其计算能力而广受赞誉。如今,
Django
成为最常用的
Web开发框架
之一。开发人员因其“包括电池”的理念而广泛喜欢
Django
Web开发...
原标题:入门
Python
编程有必要系统学习吗?对于新手而言,想要学习
Python
,有没有必要系统学习
Python
编程培训?相信这个问题困扰了很多想要学习
Python
的人。到底学习
Python
有没有必要系统培训,下面,千锋上海小编就和大家一起来讨论一下。 首先我们要知道所有的
编程语言
都有学习班,由于现在是一个快速发展的社会,许多人都面临就业难,就业竞争大的情况。而IT行业前景好,薪资待遇高是众所周知...