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后端开发
- 四、课堂小结
一、学习目标
- 了解Django框架
- 了解Django版本与Python版本的对应关系
- 了解Django的特点
- 了解MVC模式的优势
- 了解MTV模式的优势
二、课程导入
(一)课程简介
- Django是一款基于Python语言的开源Web应用框架,以其高效、简洁的设计而备受开发者欢迎。本课程旨在向学生介绍Django框架的基本概念、核心特性以及与Python语言的结合。在学习Django之前,建议学生具备HTML、CSS和JavaScript的基础知识,以更好地理解和应用框架。
(二)课程目标
- Django框架基础:学生将了解Django框架的核心概念,包括模型(Model)、视图(View)、模板(Template)等。
- 版本与对应关系:学习Django不仅需要了解其基础,还需要明确不同版本与Python版本之间的对应关系,确保在实际开发中选择合适的环境。
- Django特点:了解Django的特点,包括对象关系映射(ORM)、URL设计、模板系统等,为构建高效的Web应用奠定基础。
- MVC与MVT:对比传统的MVC(Model-View-Controller)模式和Django采用的MVT(Model-View-Template)模式,理解其优势和适用场景。
(三)适用人群
- 本课程适合有一定Python编程基础,同时对Web开发有兴趣的学生。特别推荐已经学习过HTML、CSS和JavaScript的同学,以更好地理解Django框架的前后端交互。
(四)教学方式
- 理论讲解:介绍Django框架的基本概念、版本与对应关系、特点以及MVT模型等。
- 实际操作:通过实例演示,带领学生搭建Django开发环境,创建简单的Web应用,并进行基本的功能开发。
- 项目实践:学生将参与一个小型Django项目,通过实际开发提升对框架的熟练程度。
(五)评估方式
- 考勤:占总成绩20%,要求学生积极参与课堂讨论和实际操作。
- 作业:占总成绩30%,包括完成课后作业、小项目以及相关实践任务。
- 期末检测:占总成绩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.8 | Python 2.7, 3.2, 3.3, 3.4, 3.5 |
Django 1.9, 1.10 | Python 2.7, 3.4, 3.5 |
Django 1.11 | Python 2.7, 3.4, 3.5, 3.6 |
Django 2.0 | Python 3.4, 3.5, 3.6, 3.7 |
Django 2.1, 2.2 | Python 3.5, 3.6, 3.7 |
Django 3.0, 3.1 | Python 3.6, 3.7, 3.8 |
Django 4.0, 4.1, 4.2 | Python 3.8, 3.9, 3.10 |
Django 5.0 | Python 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开发技能。
相关文章:

Django讲课笔记01:初探Django框架
文章目录 一、学习目标二、课程导入(一)课程简介(二)课程目标(三)适用人群(四)教学方式(五)评估方式(六)参考教材 三、新课讲授&#…...
JS中的闭包
闭包 闭包的概念其实很简单,就是函数A内部有一个函数B,函数B可以访问函数A的变量。也就是说闭包是指有权访问另一个函数作用域中变量的函数,利用闭包可以突破作用域链。 闭包的特性: 1、函数内再嵌套函数 2、内部函数可以引用外层的参数和变…...

深度学习在计算机视觉中的应用
深度学习在计算机视觉中的应用 摘要:本文介绍了深度学习在计算机视觉领域的应用,包括目标检测、图像分类、人脸识别等。通过分析深度学习在计算机视觉中的实际应用案例,阐述了深度学习在计算机视觉中的优势和未来发展趋势。 一、引言 计算…...

模板与泛型编程
函数模板 显示实例化 区别定义与声明 T是模板形参 int是模板实参 inpunt是函数形参 3是函数实参 显示实例化 模板必须实例化可见 翻译单元一处定义原则 与内联函数异同 引入原因:函数模板是为了编译器两个阶段的处理 内联函数是为了能在编译期展开 模板实参的类…...

【Fastadmin】一个完整的轮播图功能示例
目录 1.效果展示: 列表 添加及编辑页面同 2.建表: 3.使用crud一键生成并创建控制器 4.html页面 add.html edit.html index.php 5.js页面 6.小知识点 1.效果展示: 列表 添加及编辑页面同 2.建表: 表名:fa_x…...

Ribbon 饥饿加载
Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载: 一、懒加载 Ribbon 默认为懒加载即在首次启动Application…...

【AIGC】大语言模型的采样策略--temperature、top-k、top-p等
总结如下: 图片链接 参考 LLM解码-采样策略串讲 LLM大模型解码生成方式总结 LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature...
pip的基本命令和使用
Pip的基本命令和使用 介绍 Pip是Python的包管理工具,它能够帮助我们安装、升级和卸载Python模块。它是Python标准库的一部分,因此在大多数Python发行版中都已经预装了Pip。本文将介绍Pip的基本命令和使用方法,帮助读者更好地使用Pip管理Pyt…...

RocksDB实现原理
文章目录 简介编译安装RocksDB压缩库UbuntuCentos 基本接口高度分层架构LSM-Tree关于访问速度 MemTable落盘策略 WALRocksDB 中的每个更新操作都会写到两个地方:WAL 创建时机:重要参数 Immutable MemTableSSTBlockCacheLRU 缓存Clock缓存 写入流程读取流…...

mysql 链接超时的几个参数详解
mysql5.7版本中,先查看超时设置参数,我们这里只关注需要的超时参数,并不是全都讲解 show variables like %timeout%; connect_timeout 指的是连接过程中握手的超时时间,在5.0.52以后默认为10秒,之前版本默认是5秒,主…...

[架构之路-259]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 面向服务的架构SOA与微服务架构(以服务为最小的构建单位)
目录 前言: 二、软件架构层面的复用 三、什么是面向服务的架构SOA 3.1 什么是面向服务的架构 3.2 面向服务架构的案例 3.3 云服务:everything is service一切皆服务 四、什么是微服务架构 4.1 什么是微服务架构 4.2 微服务架构的案例 五、企业…...

7z压缩成jar包
比如我们要改下jar包中的某个文件,或者更换一下,那么就要先解压。解压后是这样的 弄好后,使用7z进行压缩,7z默认是标准压缩,会把BOOT-INF\lib 目录下的jar包也进行一次压缩,这会导致java -jar 会报 jar包相…...

python-缩进式编码+算术运算符+定义与赋值代码示例
文章目录 一、缩进式编码二、算术运算符三、定义与赋值关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 一、…...
APM性能分享观看有感
应用性能监控是什么 应用 ios,app,pc 性能 performance用户体验,注重快:流畅,稳:崩溃,省:资源占用省 监控那些性能 一,快: 1.启动监控:冷启…...
免费好用的API接口攻略
台风信息查询:提供西北太平洋及南海地区过去两年及当前年份所有编号台风的信息查询,包括台风实时位置、过去路径、预报路径及登陆信息等要素。短信验证码:可用于登录、注册、找回密码、支付认证等等应用场景。支持三大运营商,3秒可…...
五、C#笔记
/// <summary> /// 第八章:理解值和引用 /// </summary> namespace Chapter8 { class Program { static void Main(string[] args) { //8.1复制值类型的变量和类 int i 42; int copyi i…...

Oracle的错误信息帮助:Error Help
今天看手册时,发现上面有个提示: Error messages are now available in Error Help. 点击 View Error Help,显示如下,其实就是oerr命令的图形化版本: 点击Database Error Message Index,以下界面等同于命令…...

阿里云磁盘在线扩容
我们从阿里云的控制面板中给硬盘扩容后结果发现我们的磁盘空间并没有改变 注意:本次操作是针对CentOS 7的 #使用df -h并没有发现我们的磁盘空间增加 #使用fdisk -l发现确实还有部分空间 运行df -h命令查看云盘分区大小。 以下示例返回分区…...

OpenCV图像相似性比对算法
背景 在做图像处理或者计算机视觉相关的项目的时候,很多时候需要我们对当前获得的图像和上一次的图像做相似性比对,从而找出当前图像针对上一次的图像的差异性和变化点,这需要用到OpenCV中的一些图像相似性和差异性的比对算法,在O…...
RedHat8.1安装mysql5.6(GLIBC方式)
安装包下载链接下载链接 https://dev.mysql.com/downloads/file/?id492142 [rootlocalhost ~]# ls //查看压缩包 anaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz Pictures Public Templates…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...