Django讲课笔记01:初探Django框架

文章目录

  • 一、学习目标
  • 二、课程导入
    • (一)课程简介
    • (二)课程目标
    • (三)适用人群
    • (四)教学方式
    • (五)评估方式
    • (六)参考教材
  • 三、新课讲授
    • (一)Django简介
    • (二)Django版本
      • 1. Django 1.11(2017年3月发布)
      • 2. Django 2.0(2017年12月发布)
      • 3、Django 2.1(2018年8月发布)
      • 4、Django 2.2(2019年4月发布)
      • 5、Django 3.0(2019年12月发布)
      • 6、Django 3.1(2020年8月发布)
      • 7、Django 3.2(2021年4月发布)
      • 8、Django 4.0(2022年12月发布)
      • 9、Django 5.0(2023年12月发布)
    • (三)Django与Python的对应关系
    • (四)Django的特点
    • (五)MVC模式
      • 1、MVC概念
      • 2、MVC示意图
      • 3、MVC优势
    • (六)MVT模型
      • 1、MTV定义
      • 2、MTV示意图
      • 3、MTV优势
    • (七)Web开发前端和后端
      • 1、Web前端开发
      • 2、Web后端开发
  • 四、课堂小结

一、学习目标

  1. 了解Django框架
  2. 了解Django版本与Python版本的对应关系
  3. 了解Django的特点
  4. 了解MVC模式的优势
  5. 了解MTV模式的优势

二、课程导入

(一)课程简介

  • Django是一款基于Python语言的开源Web应用框架,以其高效、简洁的设计而备受开发者欢迎。本课程旨在向学生介绍Django框架的基本概念、核心特性以及与Python语言的结合。在学习Django之前,建议学生具备HTML、CSS和JavaScript的基础知识,以更好地理解和应用框架。

(二)课程目标

  1. Django框架基础:学生将了解Django框架的核心概念,包括模型(Model)、视图(View)、模板(Template)等。
  2. 版本与对应关系:学习Django不仅需要了解其基础,还需要明确不同版本与Python版本之间的对应关系,确保在实际开发中选择合适的环境。
  3. Django特点:了解Django的特点,包括对象关系映射(ORM)、URL设计、模板系统等,为构建高效的Web应用奠定基础。
  4. MVC与MVT:对比传统的MVC(Model-View-Controller)模式和Django采用的MVT(Model-View-Template)模式,理解其优势和适用场景。

(三)适用人群

  • 本课程适合有一定Python编程基础,同时对Web开发有兴趣的学生。特别推荐已经学习过HTML、CSS和JavaScript的同学,以更好地理解Django框架的前后端交互。

(四)教学方式

  1. 理论讲解:介绍Django框架的基本概念、版本与对应关系、特点以及MVT模型等。
  2. 实际操作:通过实例演示,带领学生搭建Django开发环境,创建简单的Web应用,并进行基本的功能开发。
  3. 项目实践:学生将参与一个小型Django项目,通过实际开发提升对框架的熟练程度。

(五)评估方式

  1. 考勤:占总成绩20%,要求学生积极参与课堂讨论和实际操作。
  2. 作业:占总成绩30%,包括完成课后作业、小项目以及相关实践任务。
  3. 期末检测:占总成绩50%,考察学生对Django框架的理解程度,包括理论知识和实际应用能力。

(六)参考教材

  • 《精通Django 3 Web开发》
    在这里插入图片描述
  • Django 4 中文教程(https://www.w3cschool.cn/django4/)
    在这里插入图片描述
  • 通过本课程的学习,学生将建立起对Django框架的深刻理解,为未来的Web开发工作奠定坚实的基础。

三、新课讲授

(一)Django简介

  • Django,诞生于2005年7月,是一款遵守BSD版权的开源Web应用框架。以其MVT设计模式著称,模型(Model)、视图(View)和模板(Template)的巧妙结合使得Web开发更为高效。Django不仅提供了强大的对象关系映射(ORM)功能,还拥有灵活的URL设计和可扩展的模板系统。作为Python语言的杰出代表,Django在构建高质量、可维护性强的Web应用方面表现出色。

(二)Django版本

在这里插入图片描述

  • Django是一个开源的Web应用框架,自2017年以来,经历了多个版本的演化和更新,不断提升其功能和性能。以下是Django从2017年到2023年的主要版本演化情况:

1. Django 1.11(2017年3月发布)

  • 引入了Subquery表达式,增强了数据库查询功能。
  • 提供了更好的Template模块,改进了模板渲染引擎。

2. Django 2.0(2017年12月发布)

  • 弃用了对Python 2的支持,仅支持Python 3.4及以上版本。
  • 引入了path()和re_path()等新的URL模式匹配函数。
  • 改进了Model和QuerySet,增加了新的数据库特性。

3、Django 2.1(2018年8月发布)

  • 加强了对Python 3.7的支持。
  • 引入了django.db.models.JSONField,提供对JSON数据的原生支持。
  • 增加了django.test模块中的新功能,简化了测试流程。

4、Django 2.2(2019年4月发布)

  • 提供了对MariaDB数据库的支持。
  • 引入了django.test.Client的ASGI支持,为异步视图提供更好的测试工具。
  • 更新了security.txt模板,帮助网站所有者定义安全报告的接收方式。

5、Django 3.0(2019年12月发布)

  • 引入了支持ASGI(异步服务器网关接口)的Django Channels,使Django能够处理异步请求。
  • 移除了对Python 3.5的支持,仅支持Python 3.6及以上版本。
  • 改进了Model和QuerySet,增加了更多数据库相关功能。

6、Django 3.1(2020年8月发布)

  • 加强了django.db.models.JSONField,支持更多数据库后端。
  • 引入了StrictDateTime,在模型中使用DateTimeField时提供更加严格的日期时间处理。
  • 更新了EmailValidator,支持国际化域名(IDN)。

7、Django 3.2(2021年4月发布)

  • 提供了对PostgreSQL 13的支持。
  • 引入了django.views.View的新特性,支持基于类的视图的更多定制选项。
  • 改进了Model,支持更多数据库相关特性。

8、Django 4.0(2022年12月发布)

  • 加强对Python 3.9及以上版本的支持。
  • 引入更多先进的功能,以适应Web开发的最新趋势和需求。

9、Django 5.0(2023年12月发布)

  • Django 5.0 支持 Python 3.10、3.11 和 3.12。开发团队建议用户使用每个 Python 分支的最新版本。
  • Django 5.0 引入了字段组 (field group) 和字段组模板 (field group templates) 的概念。该特性简化了 Django 表单字段相关元素的渲染,例如标签、小部件、帮助文本和错误等。
  • 新的 Field.db_default 参数用于设置数据库计算 (database-computed) 的默认值。
  • 新的 GeneratedField 支持创建数据库生成的列。该字段可在所有支持的数据库后端上使用,以创建始终根据其他字段计算的字段。

(三)Django与Python的对应关系

Django版本Python版本
Django 1.8Python 2.7, 3.2, 3.3, 3.4, 3.5
Django 1.9, 1.10Python 2.7, 3.4, 3.5
Django 1.11Python 2.7, 3.4, 3.5, 3.6
Django 2.0Python 3.4, 3.5, 3.6, 3.7
Django 2.1, 2.2Python 3.5, 3.6, 3.7
Django 3.0, 3.1Python 3.6, 3.7, 3.8
Django 4.0, 4.1, 4.2Python 3.8, 3.9, 3.10
Django 5.0Python 3.10, 3.11, 3.12

(四)Django的特点

  • Django以其卓越的特点而闻名于业界,让我们一起深入了解这些特性。

  • 首先,Django采用了强大的对象关系映射(ORM)机制,通过映射类构建数据模型,实现了业务对象与数据库的精准映射。这使得开发者可以更专注于业务逻辑,而无需过多关心数据库底层细节。

  • 在URL设计方面,Django展现了其灵活性和强大性。它支持设计任意URL,并可运用正则表达式实现更加复杂的URL匹配,为开发者提供了极大的设计自由度。

  • Django的模板系统同样令人惊叹。它提供了一套可扩展的模板语言,支持模板之间的继承,使得页面设计变得高效而灵活。开发者可以轻松创建出美观而富有交互性的页面。

  • 在表单处理方面,Django引入了便捷的表单模型生成机制,同时内置了有效性检验功能,使得表单处理变得更为简单而安全。

  • Django还以其完善的Cache系统脱颖而出,支持多种缓存方式,为应对高流量和大规模应用提供了强有力的支持。

  • Auth认证系统是Django的又一瑰宝,它不仅提供了全面的用户认证和权限设置功能,而且具有高度可扩展性,满足了各种复杂业务场景的需求。

  • 国际化是当今Web应用不可或缺的一部分,而Django的内置国际化系统使得开发多语言网站变得轻而易举。这为开发者打开了全球用户的大门,让应用更具国际竞争力。

  • 最后,Django还引以为豪的是其强大的Admin后台系统。内置的管理系统不仅易于使用,而且具有强大的扩展性,让开发者可以轻松管理和监控应用。

  • 总的来说,Django凭借其ORM、灵活的URL设计、强大的模板系统、方便的表单处理、完善的Cache系统、全面的Auth认证系统、国际化支持和强大的Admin后台系统等特点,成为众多开发者心中的首选。

(五)MVC模式

1、MVC概念

  • MVC(Model-View-Controller)是一种软件架构模式,将软件系统分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。其优势在于低耦合、开发迅速、部署便捷、可重用性高、维护成本低。模型负责业务逻辑和数据处理,视图展示用户界面,控制器协调模型和视图之间的交互。简而言之,MVC模式提供了一种有序且可维护的软件设计方案。

2、MVC示意图

  • MVC简易图
    在这里插入图片描述
  • 用户操作流程图
    在这里插入图片描述

3、MVC优势

  • MVC(Model-View-Controller)模式的优势显而易见。首先,其低耦合性使得各组件相互独立,修改其中一个不会影响其他部分,提高了系统的灵活性。其次,MVC架构能够加速开发过程,通过明确的分工,开发人员能够并行工作,提高了开发效率。部署方便,模块化的设计使得系统部署更为简便。可重用性高和维护成本低是由于模块化结构的设计,使得代码可维护性强,容易重用,降低了系统维护的难度。MVC的优势在于提供了一种清晰、高效、可维护的软件设计范式。

(六)MVT模型

1、MTV定义

  • MTV(Model-Template-View)模式是Django框架的软件设计范式。模型(Model)负责数据处理,视图(View)处理业务逻辑和调用模型、模板(Template)负责页面渲染。MTV模式在实现各组件间松耦合的同时,保持了清晰的分工,使得开发者能够更专注于业务逻辑和用户界面。通过URL分发器协调各组件工作,实现了灵活、可维护的Web应用开发,使得开发过程更为高效。

2、MTV示意图

在这里插入图片描述

3、MTV优势

  • MTV(Model-Template-View)模式是Django框架的软件设计典范,具有显著的优势。该模式通过模型(Model)、模板(Template)、视图(View)的清晰分工,实现了业务逻辑与数据模型的高度解耦。这种松耦合性使得开发更为灵活、可维护,并提高了代码的可重用性。MTV模式同时充分发挥了Django框架在处理URL分发和页面渲染方面的优势,使得Web应用的开发更加高效,为开发者提供了强大的工具和结构。

(七)Web开发前端和后端

1、Web前端开发

  • Web前端开发是构建用户在浏览器中交互的一部分,涉及HTML、CSS和JavaScript等技术。HTML定义页面结构,CSS负责样式美化,JavaScript实现页面动态交互。前端开发关注用户体验,确保网站在各种设备上都具有良好的可访问性。现代前端开发涉及众多框架和工具,如React、Vue和Webpack等,提高开发效率。前端工程师需关注不断变化的技术趋势,同时与后端开发协同工作,共同构建功能强大、用户友好的Web应用。

2、Web后端开发

  • Web后端开发是构建网站、应用程序背后逻辑和数据处理的关键部分。后端负责处理用户请求,与数据库交互,执行业务逻辑,并生成动态内容供前端展示。常见后端开发语言包括Python、Java、Node.js等,框架如Django、Flask、Spring等提供了便捷工具。合理的后端设计确保系统稳定、安全,并支持前后端协同工作。通过API,后端与前端实现数据交互,共同构建出功能强大、响应迅速的Web应用。

四、课堂小结

  • 在本节课中,我们深入探讨了Django框架的基本概念、版本演化、特点以及与Python版本的对应关系。学生们不仅了解了Django的核心组件MVT模型,还学习了MVC模式的优势。通过版本对比和演化历程,我们更好地理解了Django的发展轨迹。此外,课程还简要介绍了Web前端和后端开发,强调了它们在构建功能强大、用户友好的Web应用中的协同作用。在接下来的实际操作和项目实践中,学生将有机会深入应用所学知识,提升Django开发技能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android项目实战之编辑器集成

引言 项目需要用到编辑器&#xff0c;采用RichEditor&#xff0c;如下效果 实现 1. 引入库2 implementation jp.wasabeef:richeditor-android:2.0.0 2. XML <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&q…

LeetCode:2008. 出租车的最大盈利(dp C++)

目录 2008. 出租车的最大盈利 题目描述&#xff1a; 实现代码与解析&#xff1a; DP 二分&#xff08;两种写法&#xff09; 原理思路&#xff1a; 2008. 出租车的最大盈利 题目描述&#xff1a; 你驾驶出租车行驶在一条有 n 个地点的路上。这 n 个地点从近到远编号为 1 …

如何使用 Wordpress?托管, 网站, 插件, 缓存

这是该系列教程的第一个教程&#xff0c;最终将在运行高性能 LEMP 堆栈的阿里云 ECS 实例上运行一个新的 WordPress 站点。 在本教程中&#xff0c;我们将创建一个运行 Ubuntu 16.04 的实例&#xff0c;然后通过创建超级用户并禁用 root 登录来保护服务器&#xff0c;最后配置…

持续集成交付CICD:使用Maven命令下载Nexus制品

目录 一、实验 1.Maven安装 2.Nexus搭建公共组仓库及Maven全局配置文件 3.使用Maven命令下载Nexus制品 一、实验 1.Maven安装 &#xff08;1&#xff09;CentOS环境安装步骤 tar -xf apache-maven-3.8.6-bin.tar.gz #解压 mv apache-maven-3.8.6 /usr/local/maven #移动…

如何进行更好的面试回复之缓存函数在项目中的性能优化?

缓存函数是一种提高函数性能的技术&#xff0c;在函数被调用时&#xff0c;会将计算结果缓存起来&#xff0c;以便在后续的调用中直接返回缓存的结果&#xff0c;从而减少了重复计算的时间。 缓存函数的实现通常包括两个步骤&#xff1a; 判断缓存是否存在&#xff1a;在函数被…

提取视频光流成帧并写入视频中

修改一下配置文件就可以运行了 配置文件 config.py video_path xxxx/dataset/data/huaping/BXDQ05-花屏-1.mp4#要处理的视频路径 frame_path xxxx/dataset/frame#处理成帧之后保存的路径 flow_path xxxx/dataset/flow#处理成光流之后保存的路径 save_video_path xxxx/fe…

自动补全的 select antd react

自动补全的 select antd react 文档&#xff1a;自动补全的 select antd react.note 链接&#xff1a;http://note.youdao.com/noteshare?idf5e4a93d2b9d6be8e459edd4eb86323b&sub19796E9BC04D4ABD9ACE325FDFF59B0E 添加链接描述 import React, { useState, useRef } from…

【1day】泛微e-office OA系统xml.php 文件 SORT_ID 参数 SQL 注入漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

理解传统模式与互联网时代 消费行为模型 AIDMA , AISAS , SICAS

1 AIDMA与AISAS 消费行为模型&#xff0c;以及所诞生的IT岗位 1.1 传统市场营销消费行为模型 AIDMA模型&#xff1a;Attention&#xff08;吸引&#xff09;&#xff0c;Interest &#xff08;兴趣&#xff09;&#xff0c;Desire&#xff08;欲望&#xff09; &#xff0c;Me…

LeetCode 76. 最小覆盖子串 滑动窗口框架

双指针的特殊应用&#xff1a;滑动窗口 代码 题目链接&#xff1a;https://leetcode.cn/problems/minimum-window-substring/description/ 不说废话&#xff0c;直接贴代码&#xff1a; static string minWindow(string s, string t) {// need记录需要匹配的字符串t中每个字…

❤ Mac IDEA使用并运行项目

❤ IDEA导入项目并运行 Mac IDEA使用 (1) 仓库导入 通过获取giett仓库包的url&#xff0c;在idea中导入项目 在gitee里获取项目的ur打开idea&#xff0c;点击 File->new->Project from Version Control (2) 创建数据库ry并导入数据脚本 &#xff08;3&#xff09;修改配…

华为配置Smart Link主备备份示例

定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#xff0c;它通过监控设备的上行接口…

npm私有源构建项目下载依赖报错

Jenkins构建项目报错&#xff0c;依赖找不到 Error: Couldnt find any versions for "babel/helper-module-imports" that matches "^7.22.15"at MessageError.ExtendableBuiltin (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/…

log4j(日志的配置)

日志一般配置在resources的config下面的&#xff0c;并且Util当中的initLogRecord中的initLog&#xff08;&#xff09;方法就是加载这个log4j.properties的. 首先先看log4j.properties的配置文件 log4j.rootLoggerdebug, stdout, Rlog4j.appender.stdoutorg.apache.log4j.Co…

高性能和多级高可用,云原生数据库 GaiaDB 架构设计解析

1 云原生数据库和 GaiaDB 目前&#xff0c;云原生数据库已经被各行各业大规模投入到实际生产中&#xff0c;最终的目标都是「单机 分布式一体化」。但在演进路线上&#xff0c;当前主要有两个略有不同的路径。 一种是各大公有云厂商选择的优先保证上云兼容性的路线。它基于存…

考研真题数据结构

【2021年山西大学真题】将二叉树中所有非终端结点的左右子树交换位置&#xff0c;可以得到原二叉树的 镜像二叉树&#xff0c;如图。假设二叉树的存储形式为&#xff08;lchild&#xff0c;data&#xff0c;rchild&#xff09;&#xff0c;给出求镜像二叉树的算法: &#xff0…

Sql Server Management Studio连接Mysql

目标 已知mysql连接参数&#xff08;地址和用户&#xff09;&#xff0c;期望通过Microsoft Sql Server Management Studio &#xff08;以下简称MSSSMS&#xff09;连接Mysql&#xff0c;在MSSSMS中直接查询或修改Mysql中的数据。 下载MySql Connector/ODBC并安装&#xff0c…

使用poi-tl填充word模板,并转化为pdf输出

后端 依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version> </dependency>Word版本 Word版本填充代码 // 培训详情HashMap<String, Object> textMap new Ha…

maven环境搭建

maven历史版本下载&#xff1a;https://archive.apache.org/dist/maven/ 新建系统变量编辑Path&#xff0c;添加bin目录mvn -v测试查看版本号conf目录下新建repository文件夹&#xff0c;作为本地仓库 settings.xml <?xml version"1.0" encoding"UTF-8&…

2312d,d语言来绑定C++和rust

原文 各编译语言相同概念 1,按可重用函数拆分代码. 2,由源码中的函数名生成的串来标识函数.如,g为void foo()生成_Z3foov的标识.此串总是是可重现的;如,Linux上的Clang和GCC都遵循ItaniumCABI约定来装饰函数名. 3,在内存中的特定位置存储该函数的所有参数,然后用调用或等效指…