Django 教程(面向初学者):功能、架构和历史
Django 教程摘要
本 Django 教程从零开始涵盖了所有基础知识。在本教程中,您将学习诸如 Django 是什么、Django 历史、Django 特性、Django 框架的特点、Django 的组成部分、优缺点等等概念。
在学习 Django 之前,让我们先来理解
什么是 Web 框架?
Web 框架是一个代码库,可帮助您构建灵活、可扩展且易于维护的动态网站、Web 应用程序和 Web 服务。不同的 Web 框架包括 PHP 的 Zend、Ruby 的 Ruby on Rails 等。
什么是 Django?
Django 是一个 Python Web 开发框架,它提供标准方法来快速有效地开发网站。该高级 Web 框架的主要目标是创建复杂的数据库驱动的网站。它有助于您构建和维护高质量的 Web 应用程序。它使您能够使开发过程顺畅且节省时间,以实现快速开发。
为什么选择 Django?Django 的主要优势
以下是 Django 的主要优点
- Django 易于设置和运行。它提供了多种入门选项
- 它为管理活动提供了现成的用户界面
- 它通过使用内置的国际化系统支持多语言网站
- 帮助您快速满足海量流量需求
- Django 用于构建所有类型的内容管理系统、社交网络以及科学计算平台。
- Django 帮助您提供端到端的应用程序测试
- 帮助您使用 HTML 输出记录您的 API
- REST Framework 对多种身份验证协议提供丰富的支持
- 权限和节流策略
- 它广泛用于限制单个用户的 API 请求速率。
Django 的历史
年份 | 里程碑 |
---|---|
2003 | 该项目由 Adian Holovaty 和 Simon Willison 作为 Lawrence Journal-World 报纸的内部项目启动 |
2005 年 7 月 | 它于 2005 年 7 月发布,名为“Django”,以爵士吉他手 Django Reinhard 的名字命名 |
2008 年 6 月 | 宣布将由 Django 软件基金会 (DSF) 来维护 Django。 |
2009 年 7 月 29 日 | 发布了 Django 1.1 版本,具有聚合、基于事务的测试等功能。 |
2010 年 5 月 17 日 | 发布了 Django 1.2 版本。此更新提供了多数据库、电子邮件后端实现以及会话和 cookie 的改进。 |
2011 年 3 月 23 日 | 发布了 1.3 版本,具有类视图、静态文件等功能 |
2012 年 3 月 23 日 | 发布了 1.4 版本,具有时区和浏览器内测试等新功能 |
2013 年 2 月 26 日 | 1.5 版本支持 Python 3,提供可配置的用户模型功能。 |
2013 年 11 月 6 日 | 1.6 版本提供数据库事务管理、连接池功能。 |
2014 年 9 月 2 日 | 1.7 版本新增了应用程序加载、迁移和配置等新功能 |
2015 年 4 月 1 日 | 为多个模板引擎提供了原生支持。 |
2015 年 12 月 1 日 | 在 1.9 版本中,引入了自动密码验证功能。 |
2016 年 8 月 1 日 | 在 1.10 版本中,发布了 PostgreSQL 全文搜索。 |
2017 年 4 月 4 日 | 1.11 版本成为最后一个支持 Python 2.7 的版本 |
2017 年 12 月 2 日 | 2.0 版本成为第一个仅支持 Python 3 的发布版本。 |
2018 年 8 月 1 日 | 2.1 版本提供模型“视图”权限支持功能。 |
2021 | 移除了对 Django 3.0 的支持,并增加了对 Django 3.2 的支持 |
现在,在本 Django 入门教程中,让我们来了解 Django 的特性。
Django 的特性
以下是 Django 的特性
- 帮助您为应用程序中的 URL 定义模式
- 简单而强大的 URL 系统
- 内置身份验证系统
- 面向对象的数据库,提供一流的数据存储和检索
- 自动管理界面功能允许添加、编辑和删除项目。您可以根据需要自定义管理面板。
- 缓存框架附带多种缓存机制。
现在,在本 Django 框架教程中,我们将了解 Django 的特点。
Django 的特点
以下是 Django 的主要特点
- 松耦合- Django 帮助您使堆栈的每个元素独立于其他元素。
- 更少的代码- 确保有效开发
- 非重复- 所有内容都应在唯一一个地方开发,而不是重复开发。
- 快速开发- Django 提供快速可靠的应用程序开发。
- 一致的设计- Django 保持简洁的设计,并使其易于遵循最佳的 Web 开发实践。
在本 Django 入门教程的下一部分,我们将了解 Django 的架构。
Django 架构:MVC 和 MVT
下面是 Django 的详细架构
MVC 模式
当谈论提供 UI(Web 或桌面)的应用程序时,我们通常会谈论 MVC 架构。MVC 模式基于模型(Model)、视图(View)和控制器(Controller)。
模型定义数据结构,并负责查询数据库。
视图定义应呈现什么数据,并返回 HTTP 响应。
控制器是应用程序中处理用户交互的部分。
Django MVC-MVT 模式
模型-视图-模板(MVT)与 MVC 是一个不同的概念。这两种架构模式的主要区别在于 Django 本身负责管理控制器部分(控制模型和视图之间交互的软件代码)。模板是一个 HTML 文件,与 Django 模板语言文件(也称为 DTL)混合在一起。
下图显示了 MVT 模式的所有组件如何相互交互以响应用户请求。
如上图所示,用户向 Django 请求一个资源。Django 作为控制器,检查 URL 中可用的资源。
如果 URL 匹配,则调用一个视图,该视图与模型和模板进行交互。然后 Django 响应用户,并将一个模板作为响应发送。
现在,在本 Django 入门教程系列中,我们将了解 Django 的组成部分。
Django 的组成部分
窗体
Django 拥有强大的表单库,可以渲染 HTML 表单。该库有助于验证提交的数据并将其转换为 Python 类型。
认证
它处理用户帐户、组、基于 cookie 的用户会话等。
管理
它读取模型中的元数据,提供一个强大的界面,用于管理网站上的内容。
国际化
Django 支持将文本翻译成各种语言,支持日期、时间、数字和时区的本地化格式。
安全性
Django 提供了针对以下攻击的保护措施
- 跨站请求伪造 (CSRF)
- 跨站脚本
- SQL 注入
- 点击劫持
- 远程代码执行
使用 Django 的知名公司
以下是使用 Django 的公司
- BitBucket
- DISQUS
- NASA
- PBS (公共广播服务)
- Mozilla
- 华盛顿邮报
- 纽约时报
- 洛杉矶时报
- 卫报 国家地理
- 探索频道
使用 Django 的缺点
- 一个进程无法同时处理多个请求。
- Django 是一个非常整体化的工具。
- 组件一起部署,可能会造成混淆。
- 需要了解整个系统才能使用 Django
- 使 Web 应用程序组件紧密耦合
- 您需要为小任务进行冗长的编程。
摘要
- Django 是一个用于 Python 的 Web 开发框架,它提供了一种标准方法来快速有效地开发网站。
- Django 项目始于 2003 年,由 Adian Holovaty 和 Simon Willison 在 Lawrence Journal-World 报纸上作为一个内部项目启动
- Django 帮助您使用 HTML 输出记录您的 API。
- Django 允许您根据需要自定义管理面板。
- Django 帮助您使堆栈的每个元素独立于其他元素。
- MVC 和 MVT 架构模式之间的主要区别在于 Django 本身管理控制器部分。
- Django 架构的核心组件包括:表单、身份验证、管理、国际化、安全。
- Bitbucket、DISQUS、NASA、Pinterest、Instagram、Mozilla 等都使用 Django
- Django 的最大缺点是它无法同时处理多个请求。