Django 是什么?
Django ( /ˈdʒæŋɡoʊ/jang-goh ) 是用 Python 写的一个自由和开放源码 web 应用程序框架。 web框架是一套组件,能帮助你更快、更容易地开发web站点。
当你开始构建一个web站点时,你总需要一些相似的组件:处理用户认证(注册、登录、登出)的方式、一个管理站点的面板、表单、上传文件的方式,等等。
幸运的是,其他人很早就注意到web开发人员会面临一些共同的问题。所以他们联手创建了 web 框架(Django 是其中一个)来让你使用。
由于框架的存在,你无需重新发明轮子就能建立新的站点。
你为什么需要一个框架?
要理解什么是Django, 我们需要更仔细的看一下服务器。 服务器需要知道的第一件事就是你希望它为你的网页做什么。
想象一个用来监控接收邮件(请求)的邮箱(端口)。 这就是网站服务器做的事情。 网站服务器读这封信,然后将响应发送给网页。 但是当你想发送一些东西的时候,你必须要有一些内容。 而Django就是可以帮助您创建内容的工具
发展历史
2003年 : Django项目最初在劳伦斯出版社(Lawrence Journal-World)开始,由Adrian Holovaty和Simon Willison领导,用于管理新闻内容的网站开发。
2005年7月 : Django被正式公开发布。这标志着它作为一个开源项目的开始,允许全世界的开发者使用和贡献代码。
2008年9月 : Django项目宣布成立Django软件基金会(DSF),这是一个独立的组织,旨在促进Django软件的发展,维护其开源性质。
Django 1.0(2008年) :首个稳定版本发布,标志着 Django 框架的成熟和稳定。
发展
- Django 1.3(2011年) :引入了多个重要功能,包括 Class-based Views(基于类的视图)和 staticfiles(静态文件处理)等。
- Django 1.4(2012年) :引入了数据库迁移(migrations)功能,大大简化了数据库结构的迁移和管理。
- Django 1.7(2014年) :引入了 Django Rest Framework,使得构建 RESTful API 更加方便。
- Django 2.0(2017年) :移除了对 Python 2 的支持,开始全面支持 Python 3。
- Django 3.0(2019年) :引入了异步视图(asynchronous views)和路径参数(path converters)等新功能。
- Django 3.1(2020年) :进一步增强了异步支持,并引入了更多的新特性和改进。
- Django 3.2(2021年) :引入了新的模板块和标签,增强了性能和安全性。
各版本特点
Django1.x
- 默认不支持异步
- Django 1.x主要集中在传统的Web开发上,其设计思想倾向于同步HTTP请求处理。
- 默认情况下,并未内置对异步编程的支持,开发者若要在Django 1.x中实现异步处理,通常需要借助第三方库如
django-celery
或django-tornado
等来结合其他异步框架(如Celery、Tornado等)来实现后台任务的异步执行。
Django2.x
- 默认不支持异步
- 在Django 2.x版本中,虽然核心框架并未直接提供对异步HTTP请求的支持,但已经开始引入一些异步相关的新特性和API,比如
asgi
(Asynchronous Server Gateway Interface) 标准的初步支持。 - 开发者可以通过安装第三方ASGI服务器(如
daphne
或uvicorn
),配合channels
库使用,来实现Websockets和消息队列等场景下的部分异步功能。
Django3.x
- 自带异步功能
- Django 3.x标志着其正式对异步编程的支持,它引入了
channels
框架作为标准库的一部分,实现了全栈的WebSocket支持以及与asyncio
的集成,使得开发者可以直接在视图层、消费者层以及中间件层面编写异步代码,提供了ASGI
和HTTP/2
协议的底层支持。 - 此外,
django-redis
、django-socketio
等第三方库也进一步丰富了异步应用的构建能力。
Django4.x
- 在Django 4.x版本之后,异步功能得到了持续加强和完善。
- 例如,在4.0中,
channels
框架进行了重大重构,使其更加轻量级和模块化,同时引入了websockets
库作为默认WebSocket支持,大大简化了开发者配置和使用的复杂度。 - 此外,对于长期支持计划(LTS)版本,Django会确保异步相关的API和工具在后续更新中得到稳定且兼容的维护和支持,以满足现代Web应用对高性能、低延迟的需求。
文章来源
本文来源于github开源项目 从Python到Django入门教程
作者 Boris Liu