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 的版本差别并没有你想象中那么大,完全不必为版本的问题头疼。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


注:所有源代码均实测运行过。所有源代码均已上传CSDN,请有需要的朋友自行下载。
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供了身份认证、权限校验、流量管理等。ViewSet在开发接口中不经常用。
一、Django介绍Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django 是一个开放源代码的 Web 应用框架,由 Python 写成。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。Django学习线路Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。这个MVT模式并
本文从nginx快速掌握到使用,gunicorn快速掌握到使用,实现小白快速搭建django项目,并对可能出现的报错进行了分析
uniapp微信小程序订阅消息发送服务通知
Django终端打印SQL语句 1 Setting配置: 2 默认python 使用的MysqlDB连接,Python3 支持支持pymysql 所有需要在app里面的__init__加上下面配置:
url: re_path('authors/$', views.AuthorView.as_view()), re_path('book/(?P\d+)/$', vie
前提 关于html寻找路线: template 如果在各个APP中存在, Django 会优先找全局template 文件下的html文件,如果全局下的template文件没有相关的html Djan
// GET请求request.GET // POST请求request.POST // 处理文件上传请求request.FILES // 处理如checkbox等多选 接受列表request.get
from bs4 import BeautifulSoup#kindeditordef kindeditor(request): s = ''' <li><s
view.py 配置 html 配置
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault('content_type&#
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) &gt
return HttpResponse("OK") 返回一个字符串 return redirect("/index/") 返回URL return render
from django.http import JsonResponse JsonResponse 里面代码会加这一个响应头 kwargs.setdefault('content_type&#
浏览器有一个很重要的概念——同源策略(Same-Origin Policy)。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况
自动发送 > 依赖jQuery文件 实例-->GET请求: 手动发送 > 依赖浏览器XML对象(也叫原生ajax) Ajax主要就是使用 【XmlHttpRequest】对象来完成请
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) &gt
// GET请求request.GET // POST请求request.POST // 处理文件上传请求request.FILES // 处理如checkbox等多选 接受列表request.get
return HttpResponse("OK") 返回一个字符串 return redirect("/index/") 返回URL return render