Django 是一个高级 Python Web 框架。Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。Django 使得以更少的代码快速构建更好的 Web 应用程序变得更加容易。

Django的历史版本

  • 2003 年- 由 Adrian Holovaty 和 Simon Willison 将其作为 Lawrence Journal-World 报纸的内部项目启动。
  • 2005 - 2005年 7 月发行,并以爵士吉他手 Django Reinhardt 的名字命名为 Django。
  • 2005 - Django已经成熟,它足以处理高流量站点。
  • 现在 - Django 现在是一个开源项目,贡献者遍布世界各地。

从正式版 1.0 之后,Django 的版本发布过程如下:

1) 功能版

版本号定义为 A.B、A.B+1 等,大概每 8 个月发布一次,每个版本都有所改进。最新的 Django 版本是 Django 3.0 于 2020 年发布。

2) 补丁版

主要用来修复 bug 或者安全问题,版本号为 A.B.C 或者 A.B.C+1。

3) LTS 版本

LTS 也即长期支持版本,官方会长期提供支持和安全更新,时长至少三年,所以我们建议安装和使用 LTS 版本。

一些 Django 版本会被指定为 LTS,例如 1.11 LTS。值得大家注意的是,Django 最后一个支持 Python 2.7 的版本是 1.11 LTS,最新的 LTS 版本是 2.2 LTS。

1.gif

Django 设计理念

Django 具有以下设计理念 -

  • 松耦合- Django 旨在使其堆栈中的每个元素独立于其他元素,以达到松耦合的目的
  • 尽量减少编码- 更少的代码,从而快速开发。
  • 不要重复编码(DRY) - 应该只在一个地方开发,而不是一次又一次地重复进行编码。
  • 快速开发- Django 的理念是尽其所能促进快速开发。
  • 干净的设计- Django 在自己的代码中严格保持干净的设计,并且可以轻松遵循最佳的 Web 开发实践。

Django框架的特点

Django 的主要特点如下:

  • 完善的文档:经过 10 余年的发展和完善,Django 官方提供了完善的在线文档,为开发者解决问题提供支持。
  • 集成 ORM 组件:Django 的 Model 层自带数据库 ORM 组件,为操作不同类型的数据库提供了统一的方式。
  • URL 映射技术:Django 使用正则表达式管理URL映射,因此给开发者带来了极高的灵活性。
  • 后台管理系统:开发者只需通过简单的几行配置和代码就可以实现完整的后台数据管理Web控制台。
  • 错误信息提示:在开发调试过程中如果出现运行异常,Django 可以提供非常完整的错误信息帮助开发者定位问题。

Django 设计模式

如你所知,Django 是一个 Python Web 框架。和大多数现代框架一样,Django 支持 MVC 模式。首先让我们看看什么是模型-视图-控制器(MVC)模式,然后我们再看看 Django 对模型-视图-模板(MVT)模式的特殊支持。

MVC 模式

在讨论提供 UI(Web 或桌面)的应用程序时,我们通常会涉及到 MVC 架构。顾名思义,MVC 模式基于三个组件:模型、视图和控制器。

  • 模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
  • 视图(View) - 界面设计人员进行图形界面设计。
  • 控制器(Controller)- 负责转发请求,对请求进行处理。

2.jpg

MVT 模式

模型-视图-模板 (MVT) 与 MVC 略有不同。事实上,这两种模式的主要区别在于 Django 本身负责控制器部分(控制模型和视图之间交互的软件代码),留给我们的是模板。模板是与 Django 模板语言 (DTL) 混合的 HTML 文件。

下图说明了 MVT 模式的每个组件如何相互交互以服务用户请求

3.jpg

开发人员提供模型、视图和模板,然后将其映射到一个 URL,Django 会自动将其展现给用户。其中涉及到的大概流程为:

用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:

  • 如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户。
  • 如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。

视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

标签: django语言, django教程, django技术, django学习, django学习教程, django下载, django开发, django入门教程, django进阶教程, django高级教程, django面试题, django笔试题, django编程思想