Django 简介和版本介绍

一、简介
官方地址:https://www.djangoproject.com
Django 是一个由Python 编写的具有完整架站能力的开源Web框架。使用 Django,只要很少的代码,开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
Django 本身基于MVC 架构,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等优点。
Django 诞生于2003年,2006年加入了BSD许可证,成为开源的Web 框架。Django 这一词语是根据比利时的爵士音乐家 Django Reinhardt 命名的,含有希望Django 能够优雅地演奏(开发)各种乐曲(Web应用)的美好含义,和著名的电影《姜戈的解放》无关。
Django 是由美国堪萨斯(Kansas)州Lawrence 城中的一个新闻开发小组开发出来的。当时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和 Simon Willison 在用 Python 编写Web新闻网站,他们的 World Online 小组制作并维护了当地的几个新闻站点。新闻界独有的特点是迭代迅速,从开发到上线,通常只有几天或几个小时的时间。为了能在截止时间前完成工作,Adrian 和 Simon 不得不开发一种通用的高效的网络应用开发框架,也就是Django。
2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个 World Online 的站点。不久,小组中的 Jacob Kaplan-Moss 决定把这个框架发布为一个开源软件。短短数年,Django 项目就有了数以万计的用户和贡献者,在世界范围内广泛传播。 原来的 World Online 的两个开发者(Adrian and Jacob)仍然掌握着 Django,但是其发展方向受社区团队的影响更大。
Django 具有以下特点
- Django 是一个全栈Web 框架。所谓全栈框架,是指除了封装网络和线程操作,还提供 HTTP 请求和响应、数据库读写管理、HTML 模板渲染等一系列功能的框架。你可以不太准确地理解为全栈工程师包办了前后端和数据库访问的所有开发工作,整个网站都是一个人搭建的。
- 功能完善、要素齐全。该有的、可以没有的都有,常用的、不常用的工具都提供。Django 提供了大量的特性和工具,无须你自己定义、组合、增删及修改。但是,在有些人眼里这被认为是臃肿不够灵活,发挥不了程序员的能动性。
- 完善的文档。经过长期的发展和完善,Django有广泛的实践经验和完善的在线文档。开发者遇到问题时可以搜索在线文档寻求解决方案。
- 强大的数据库访问 API。Django 的Model 层自带数据库ORM 组件,开发者无须学习其他数据库访问技术(例如SQLALchemy)。当然你也可以使用 SQLALchemy,甚至不适用ORM 组件。
- 灵活的路由系统。Django 具备路由转发、正则表达式、命名空间、URL反向解析等功能。
- 丰富的Template 模板功能:Django 自带类似 jinjia 的模板语言,不但原生功能丰富,还可以自定义模板标签和过滤器。并且以类似Python 的调用机制和视图默契配合。
- 自带后台管理应用admin:只需要通过简单的几行配置和代码就可以实现一个完整的后台数据管理控制平台。这是Django 最受欢迎的功能。
- 完整的错误信息提示:在开发调试过程中如果出现运行错误或者异常,Django 可以提供非常完整的错误信息帮助定位问题。
MVC及MTV设计模式
- 在目前基于Python 语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC 设计模式。
MVC设计模式
- 最早由 Trygve Teenskaug 1978年提出,上世纪80年代是程序语言 Smalltalk 的一种内部架构。后来MVC 被其他领域借鉴,成为了软件工程中的一种通用架构模式。MVC 把Web框架分为三个基础部分。
模型(Model)
- 用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web 应用程序中用于处理应用程序的数据逻辑的部分,Model 只提供功能性的接口,通过这些接口可以获取Model的所有功能。白话说,这个模块就是业务逻辑和数据库的交互层,定义了数据表。
视图(View)
- 负责数据的显示和呈现,是对用户的直接输出。
控制器(Controller)
- 负责从用户端收集用户的输入,可以看成提供View的反向功能。
- 这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程,在Web 开发过程任务分配时,不需要重写业务逻辑及数据访问代码。
- MVC在Python 之外的语言中也有广泛应用,例如 VC++的MFC,Java 的Structs 及Spring、C#的.NET开发框架,都非常有名。
MTV设计模式
- MTV 和 MVC 本质上是一样的。
- Django 对传统的MVC 设计模式进行了修改,将视图分成View 模块和 Template 模块两部分,将动态的逻辑处理与静态的页面展示分离开。
- 而Model采用了ORM技术,将关系型数据库表抽象成面向对象的 Python类,将数据库的表操作转换成Python 的类操作,避免了编写复杂的SQL语句。
模型(Model)
- 和MVC 中的定义一样。
模板(Template)
- 将模型数据与HTML 页面结合起来的引擎。
视图(View)
- 负责实际的业务逻辑实现Django 的MTV 模型组织。

二、Django 版本
Django 是基于Python的Web 框架,依赖Python 环境,所以需要提前安装好Python 解释器。
建议安装长期支持 LTS 版本的 Python。
Django 官方版本查看
Django 各版本对Python 版本的依赖关系
| Django 版本 | Python 版本 |
|---|---|
| 3.1 | 3.6, 3.7, 3.8, 3.9 (added in 3.1.3) |
| 3.2(LTS) | 3.6, 3.7, 3.8, 3.9, 3.10 (added in 3.2.9) |
| 4.0 | 3.8, 3.9, 3.10 |
| 4.2(LTS) | 3.9、3.10 |
Django 本身的版本规划时间图如下所示

未来版本的计划节点

从上表中可以看出Django 的版本更新迭代非常快,大版本号几乎两年加一。
实际上,对于非重度用户,Django 的版本差别并没有你想象中那么大,完全不必为版本的问题头疼。
Django 简介和版本介绍的更多相关文章
- [转帖]sql server版本特性简介、版本介绍简介
sql server版本特性简介.版本介绍简介 https://www.cnblogs.com/gered/p/10986240.html 目录 1.1.sql server的版本信息 1.2.版本重 ...
- sql server版本特性简介、版本介绍简介
1.SQL Server 版本简介 1.1.sql server的版本信息 年 代 版 本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 ...
- Django Web开发【1】Django简介
前言 看完<Django Book>之后, 总想找个实例来实战开发下,无奈国内Django的书籍相当少,只能从英文书籍中吸取养料,偶然之后得到Learning Website Develo ...
- Django简介及Django项目的创建详述
Django简介 Django是一个开源的Web应用框架,由Python写成.但是,百度百科中讲它采用了MVC框架模式,其实这个解释不准确. 确切的讲,Django的模式是:路由控制+MTV模式.所谓 ...
- Django准备知识-web应用、http协议、web框架、Django简介
一.web应用 Web应用程序是一种可以通过web访问的应用程序(web应用本质是基于socket实现的应用程序),程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 ...
- Django默认权限机制介绍及实践
演示Django版本为当前最新版本v2.2 当Django配置文件中的INSTALL_APPS包含了django.contrib.auth时,就默认启用了一个简单的权限系统,提供了为用户或组分配权限的 ...
- Django之Django简介,开发环境搭建,项目应用创建
软件及Django框架简介 软件框架 一个软件框架是由其中各个软件模块组成的: 每一个模块都有特定的功能: 模块与模块之间通过相互配合来完成软件的开发. 软件框架是针对某一类软件设计问题而产生的. M ...
- Celery在Django中的使用介绍
Celery在Django中的使用介绍 Celery简介 celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必须工具. 它是一个专注于实时处理的任务队列,同时也 ...
- Django简介及安装
Django简介及安装 我们都知道,Django是一种基于Python的Web开发框架. 那么,什么是Web开发?Web开发指的是开发基于B/S架构,通过前后端的配合,将后台服务器的数据在浏览器上展现 ...
随机推荐
- Docker容器搭建android编译环境
Docker容器搭建android编译环境 目录 1 部署容器 1.1 手动部署 1.1.1 配置docker 1.1.2 启动容器 1.1.3 配置环境 1.2 Dockerfile 2 镜像管理 ...
- Django【查询】 基础回顾与深入应用
官方Django3.2 文档:https://docs.djangoproject.com/en/3.2/topics/db/queries/ 本文大部分内容参考官方3.2版本文档撰写,仅供学习使用 ...
- JDBC(Java Database Connectivity)编写步骤
JDBC是代表一组公共的接口,是Java连接数据库技术: JDBC中的这些公共接口和DBMS数据库厂商提供的实现类(驱动jar),是为了实现Java代码可以连接DBMS,并且操作它里面的数据而声名的. ...
- 图像处理——相位恢复(GS,TIE,改进型角谱迭代法)
利用GS,TIE,改进型角谱迭代算法进行相位恢复 角谱传播理论 角谱传播理论可以翻阅傅里叶光学的书,就能找到定量分析的计算公式,可以分析某个平面的角谱垂直传播到另外一个平面的角谱,得到其振幅与相位信息 ...
- IO概述(概念&分类)和字节输入流+OUTputStream类&FileOutPutStream类介绍
IO概述 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了保存,可能文件就白白编辑了.当你的电脑上插入一个U盘,可以吧一个视频,拷贝到你的电脑硬盘里,那么数据都是在哪些设备上的 ...
- git和提交分支
实习到今天,已经开始做项目一段时间了,当然只是实习生的个人项目. 项目是导师发在git上面的,要求我们用git的PR提交 可是我不会啊...git仅仅是简单的个人提交总的项目到仓库里,什么新建分支,p ...
- Pandas简单操作(学习总结)
Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),是一个提供高性能.易于使用的数据结构和数据分析工具. 接下来查看Pandas的基本使用: # 导入模块 i ...
- 1000-ms-HashMap 线程安全安全问题
问题: HashMap是否是线程安全 详解 http://www.importnew.com/21396.html 有源码分析 和代码性能比较 CHM性能最好 HashMap不是线程安全的:Hasht ...
- Charles 某音最新版本抓包环境搭建
本文仅供学习交流使用,如侵立删! Charles 某音最新版本抓包环境搭建 操作环境 google nexus5x Android 8.1 Magisk 24.3 Douyin 17.3 kaliLi ...
- 关于微信豆苹果(IOS)用户1比10充值方法
微信iOS端微信7.0.20版本之后就上线了微信豆功能,相比大家对微信豆已经不陌生了. 微信官方现在给出了微信豆的含义,微信豆是用于支付微信内虚拟物品的道具,支持在视频号中购买虚拟礼物.也可以对公 ...