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…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
