
Python的Django框架是目前流行的一款重量级网站开发框架,具备简单易学、搭建快速、功能强大等特点。本书从简单的HTML、CSS、JavaScript开始介绍,再到Django的基础知识,融入了大量的代码案例、重点提示、图片展示,做到了手把手教授。本书基于Django 3.0.7版本、Python 3.8.5版本、Rest Framework 3.11.1版本、Vue.js 4.5.4版本、数据库MySQL 80版本进行讲解。本书还提供了一个商业级别的项目案例,采用目前主流的前后端分离开发技术,以便读者可以体验正式项目的开发过程。熟练掌握本书内容后,读者将达到中级Web项目开发工程师的技术水平。
前 言 手把手教读者从零基础开发网站到最后做出一个商业化的项目,是本书的主导设计思路。这样的设计思路,横跨基础知识的掌握和项目实战经验的积累,在写作上是有难度的,但是对读者而言将是非常有价值的。本书的两位作者都具有丰富的实战经验和写作经验,经过认真策划,本书达成了最初的目标。熟练掌握本书的内容,读者将具备中级 Web 项目开发工程师的水平。 一、本书设计原则 本书在内容安排和设计上遵循以下原则。 1.由浅入深、层层深入原则 这符合绝大多数读者掌握知识的一般规律和要求,为此,本书的第一部分定位于技术知识的普及和浅度应用,第二部分则给出了商业实战项目“三酷猫”网上教育服务系统的实现过程。每章,甚至每小节,都按照先易后难的顺序安排内容,方便读者学习。在编写过程中尽量采用图片、表格、代码注释等方式,提高读者的接受程度。 2.理论和实践结合原则 基础部分同步安排了 100 多个配套代码案例,方便读者边学习边上机实践。另外,每章章末都提供了配套的习题和实验,方便读者进一步巩固所学知识。 3.商业实战原则 编程的理想结果是能够进行商业实战,本书的作者安义老师帮助大家实现了这个目标,为本书提供了一套完整的商业代码。而且,本书的第二部分从商业开发的角度,从整体到局部展现了精彩的内容。通过这个商业项目,读者也能掌握商业开发所需的知识:前端工程师需要掌握 HTML、CSS、JavaScript(JS)、Java、美工、界面建模、前端技术框架(如 Vue.js)等;后端工程师需要掌握 Python、Django、Rest Framework、数据库等。 4.易阅读原则 在代码编排上,本书考虑了读者的视觉接受程度,并在每行主要代码后面都提供了代码注释,方便读者阅读、需要注意,注释内容与正文内容同等重要。对于开发中容易碰到的技术难点或利于理解的知识延伸内容,通过“注意”“说明”等形式进行友善提醒,也有部分通过脚注加以说明。 二、读者对象 本书适合以下人群或机构阅读、学习。 1.高校学生:对于具有 Python 语言基础的高校学生而言,选择本书可以一步跨过项目实战的门槛,领略商业实战项目的“五彩缤纷”,明确实战要求,积累实战经验,为毕业后就业提供更高的起点。 2.需要转换方向的 IT 工程师:本书提供了最近两年流行的前后端分离开发方案,通过学习本书内容,读者可以掌握新技术,并将其直接用于项目实战。 3.高校老师:本书从基础知识到项目实战,为老师们的教学提供了最新、最成熟的案例;同时,配套提供的 PPT、案例代码、习题及实验手册可以更好地帮助教学,在线 QQ 学习群可以为老师们提供各种技术支持(详细支持范围届时可咨询群主)。 4.科研人员:对于从事大数据、人工智能研究的科研人员,利用 Python 体系下的 Web 开发技术,可以更方便地实现研究内容的工程化。 5.培训机构:本书可以为培训机构的学员提供现成的项目实战案例。 三、学习帮助 学习本书中的内容,你将在以下方面获得帮助。 1.本书提供了在线 QQ 学习群,群号可添加客服获取。 2.本书提供了许多下载链接、资源链接,各位读者可以加入在线 QQ 学习群下载链接清单,获取书中涉及的网页链接地址。 3.本书提供配套学习代码,下载方式如下。 (1)加入在线 QQ 学习群,在共享文件夹中获取。 (2)通过 GitHub 获取。① 4.本书免费提供配套视频资源,请加入在线 QQ 学习群获取。 5.对于老师,可提供额外的在线帮助,请加老师群,群号为 651064565。 四、作者介绍 刘瑜,软件工程硕士,拥有 20 多年的 C、ASP、BASIC、FoxBASE、Delphi、Java、C#、Python 等编程经验,高级信息系统项目管理师、CIO、硕士企业导师。 负责开发过商业项目 20 余项,承担省部级千万级别项目 5 个,发表国内外论文 10余篇。出版专著《战神——软件项目管理深度实战》《NoSQL 数据库入门与实战》 《Python 编程从零基础到项目实战(微课视频版)》《Python 编程从数据分析到机器学习实践》《算法之美——Python 语言实现》。 安义,拥有 20 多年软件开发经验,主导过多个行业(医疗、教育、互联网、地产、游戏、汽车、餐饮等)的软件系统开发工作。熟悉多种开发语言和开发框架,拥有丰富的软件实战经验。曾在腾讯负责袋鼠跳跳应用的研发工作,目前就职于某软件公司,担任 CEO、软件架构师。 五、习题及实验使用说明 本书每章章末均提供了配套习题及实验,具体的使用说明如下。 1.所有习题答案免费提供,请通过在线 QQ 学习群获取。 2.将针对实验题给出标准答案或重点提示,为老师额外提供技术支持。 六、关于“三酷猫” 无论是学生还是程序员,天天敲代码,显然有些单调。刘瑜老师想给学习过程加点儿“调味剂”,在学习内容中增加点儿快乐元素——“三酷猫”就是其中之一。“三酷猫”的灵感来自电影《八条命》的主题曲 Three Cool Cats。在编程中融入俏皮的音乐、可爱的电影主角能使学习更加快乐,让学习者有更大的收获!让编程具有艺术感,也许会更好。 七、图书配套资源声明 关于本书所有的配套资源,声明如下。 1.本书所有配套资源(链接、案例代码、视频、PPT、习题答案、实验题代码)免费提供,但作者拥有所有权和解释权,未经作者允许,不得用于商业用途。 2.本书提供的“三酷猫”网上教育服务系统,仅用于教学,作者拥有该商业项目的所有权,读者不能直接将其用于商业行为。作者免费许可读者改造、利用该项目框架进行商业开发,但产生的一切法律纠纷与作者无关。 八、致谢 本书编写过程中得到了哈尔滨工业大学(威海校区)的戴愚志博士、天津大学的张宁博士、湖南师范大学的施游老师等诸多专家及国内 IT 界的朋友们的关注和支持,在此一并致谢。
目 录 第一部分 Web 编程基础 第 1 章 Web 入门知识 ............................................................................................................ 2 1.1 Web 简介 ................................................................................................................................ 2 1.2 Web 访问原理 ........................................................................................................................ 7 1.3 网页技术 ................................................................................................................................ 8 1.3.1 网页构成 ..................................................................................................................... 8 1.3.2 网页分类 ..................................................................................................................... 9 1.4 Web 项目实施 ...................................................................................................................... 11 1.4.1 开发流程 ................................................................................................................... 12 1.4.2 任务分工 ................................................................................................................... 12 1.5 习题 ...................................................................................................................................... 13 1.6 实验 ...................................................................................................................................... 14 第 2 章 客户端技术基础 ........................................................................................................ 15 2.1 HTML .................................................................................................................................. 15 2.1.1 HTML 简介 ............................................................................................................... 15 2.1.2 HTML 编辑工具 ....................................................................................................... 16 2.1.3 HTML 标签 ............................................................................................................... 17 2.1.4 案例:第一个网站 ................................................................................................... 21 2.2 CSS ....................................................................................................................................... 23 2.2.1 CSS 简介 ................................................................................................................... 23 2.2.2 CSS 语法基础 ........................................................................................................... 24 2.2.3 CSS 样式 ................................................................................................................... 27 2.2.4 案例:通过 CSS 建立网站 ...................................................................................... 31 2.3 JavaScript ............................................................................................................................. 33 2.3.1 JavaScript 简介 ......................................................................................................... 33 2.3.2 JS 语法基础 .............................................................................................................. 34 2.3.3 JS 高级功能 .............................................................................................................. 40 2.3.4 案例:内嵌 JS、CSS 的网站 .................................................................................. 46 2.4 习题 ...................................................................................................................................... 50 2.5 实验 ...................................................................................................................................... 50 第 3 章 开发工具入门 ........................................................................................................... 52 3.1 Python .................................................................................................................................. 52 3.2 PyCharm 代码开发工具 ...................................................................................................... 55 3.2.1 PyCharm 简介及安装 ............................................................................................... 55 3.2.2 基本使用功能 ........................................................................................................... 59 3.3 MySQL 数据库 .................................................................................................................... 63 3.3.1 MySQL 数据库简介及安装 ..................................................................................... 63 3.3.2 驱动安装 ................................................................................................................... 69 3.4 Django .................................................................................................................................. 72 3.4.1 初识 Django .............................................................................................................. 72 3.4.2 安装 Django .............................................................................................................. 73 3.4.3 Django 设计概述 ...................................................................................................... 74 3.5 建立第一个项目 .................................................................................................................. 76 3.5.1 创建项目 ................................................................................................................... 76 3.5.2 显示自定义内容 ....................................................................................................... 79 3.6 初识 Admin .......................................................................................................................... 81 3.7 配置文件 .............................................................................................................................. 84 3.8 习题 ...................................................................................................................................... 89 3.9 实验 ...................................................................................................................................... 90 第 4 章 模型 .......................................................................................................................... 91 4.1 初识模型 .............................................................................................................................. 91 4.1.1 模型实现原理 ........................................................................................................... 91 4.1.2 创建模型 ................................................................................................................... 92 4.2 字段操作 .............................................................................................................................. 98 4.2.1 常用字段 ................................................................................................................... 98 4.2.2 关联关系型字段 ..................................................................................................... 101 4.2.3 字段参数 ................................................................................................................. 108 4.2.4 返回字段值 ............................................................................................................. 111 4.3 模型扩展功能 .................................................................................................................... 111 4.3.1 元数据 ..................................................................................................................... 112 4.3.2 模型类继承 ............................................................................................................. 115 4.3.3 包管理模型 ............................................................................................................. 117 4.4 数据库基本操作 ................................................................................................................ 118 4.4.1 新增记录 ................................................................................................................. 118 4.4.2 查询记录 ................................................................................................................. 120 4.4.3 修改记录 ................................................................................................................. 126 4.4.4 删除记录 ................................................................................................................. 127 4.5 数据库高级操作 ................................................................................................................ 128 4.5.1 一对一关联表操作 ................................................................................................. 128 4.5.2 一对多关联表操作 ................................................................................................. 129 4.5.3 多对多关联表操作 ................................................................................................. 131 4.5.4 SQL 语句执行 ........................................................................................................ 133 4.6 习题 .................................................................................................................................... 135 4.7 实验 .................................................................................................................................... 135 第 5 章 视图 ........................................................................................................................ 137 5.1 URL 路由 ........................................................................................................................... 137 5.1.1 Django 处理一个请求 ............................................................................................ 137 5.1.2 URL 转发 ................................................................................................................ 139 5.1.3 路由变量的设置 ..................................................................................................... 141 5.1.4 通过正则表达式进行路由设置 ............................................................................. 142 5.1.5 路由命名和命名空间 ............................................................................................. 143 5.1.6 路由反向解析 ......................................................................................................... 147 5.2 视图函数 ............................................................................................................................ 149 5.2.1 视图函数定义 ......................................................................................................... 149 5.2.2 render 函数返回响应 .............................................................................................. 151 5.2.3 视图重定向 ............................................................................................................. 152 5.2.4 错误提示视图 ......................................................................................................... 153 5.2.5 HttpRequest 对象 .................................................................................................... 157 5.2.6 HttpResponse 对象 .................................................................................................. 161 5.2.7 文件上传 ................................................................................................................. 164 5.2.8 文件下载 ................................................................................................................. 167 5.3 视图类 ................................................................................................................................ 170 5.3.1 内置显示视图 ......................................................................................................... 170 5.3.2 内置编辑视图 ......................................................................................................... 181 5.3.3 内置日期视图 ......................................................................................................... 192 5.4 视图与数据库事务 ............................................................................................................ 198 5.5 习题 .................................................................................................................................... 202 5.6 实验 .................................................................................................................................... 203 第 6 章 模板 ........................................................................................................................ 204 6.1 初识模板 ............................................................................................................................ 204 6.1.1 模板配置 ................................................................................................................. 204 6.1.2 调用模板 ................................................................................................................. 206 6.2 Django 默认模板引擎 ....................................................................................................... 207 6.2.1 模板上下文 ............................................................................................................. 208 6.2.2 模板标签 ................................................................................................................. 210 6.2.3 自定义标签 ............................................................................................................. 213 6.2.4 过滤器 ..................................................................................................................... 215 6.2.5 自动 HTML 转义 .................................................................................................... 218 6.2.6 模板继承 ................................................................................................................. 220 6.3 Jinja2 模板引擎 ................................................................................................................. 222 6.3.1 初识 Jinja2 模板引擎 .............................................................................................. 222 6.3.2 模板语法 ................................................................................................................. 226 6.4 习题 .................................................................................................................................... 230 6.5 实验 .................................................................................................................................... 231 第 7 章 表单 ........................................................................................................................ 232 7.1 初识表单 ............................................................................................................................ 232 7.2 Form 表单 .......................................................................................................................... 234 7.2.1 创建 Form 表单 ...................................................................................................... 234 7.2.2 表单字段 ................................................................................................................. 237 7.2.3 小控件 ..................................................................................................................... 240 7.2.4 表单模板 ................................................................................................................. 243 7.3 模型表单 ............................................................................................................................ 246 7.3.1 创建模型表单 ......................................................................................................... 246 7.3.2 将模型字段转换为表单字段 ................................................................................. 249 7.4 习题 .................................................................................................................................... 251 7.5 实验 .................................................................................................................................... 252 第 8 章 Admin ..................................................................................................................... 253 8.1 深入理解 Admin ................................................................................................................ 253 8.1.1 使用中文界面 ......................................................................................................... 253 8.1.2 应用后端管理 ......................................................................................................... 254 8.2 ModelAdmin ...................................................................................................................... 261 8.2.1 ModelAdmin 属性 .................................................................................................. 261 8.2.2 ModelAdmin 方法 .................................................................................................. 264 8.2.3 ModelAdmin 资产 .................................................................................................. 269 8.3 AdminSite 模板 .................................................................................................................. 271 8.3.1 使用 Admin 模板原理 ............................................................................................ 271 8.3.2 定制 Admin 模板 .................................................................................................... 274 8.4 习题 .................................................................................................................................... 276 8.5 实验 .................................................................................................................................... 276 第 9 章 用户认证系统 ......................................................................................................... 278 9.1 初识用户认证 .................................................................................................................... 278 9.1.1 内置功能 ................................................................................................................. 278 9.1.2 运行基础 ................................................................................................................. 281 9.2 用户对象 ............................................................................................................................ 282 9.2.1 内置 User 模型使用基础 ........................................................................................ 282 9.2.2 内置功能应用案例 ................................................................................................. 284 9.2.3 扩展 User ................................................................................................................ 290 9.3 权限与认证 ........................................................................................................................ 294 9.4 在视图中认证用户 ............................................................................................................ 297 9.4.1 LoginView ............................................................................................................... 297 9.4.2 LogoutView ............................................................................................................. 300 9.5 习题 .................................................................................................................................... 302 9.6 实验 .................................................................................................................................... 303 第 10 章 其他常用 Web 功能 .............................................................................................. 304 10.1 Ajax .................................................................................................................................. 304 10.1.1 Ajax 使用基础 ...................................................................................................... 304 10.1.2 Ajax 使用案例 ...................................................................................................... 306 10.2 会话 .................................................................................................................................. 309 10.2.1 会话配置与使用 ................................................................................................... 309 10.2.2 会话使用案例 ....................................................................................................... 313 10.3 日志 .................................................................................................................................. 315 10.3.1 日志对象与配置 ................................................................................................... 315 10.3.2 日志使用案例 ....................................................................................................... 317 10.4 缓存 .................................................................................................................................. 320 10.4.1 配置缓存 ............................................................................................................... 321 10.4.2 缓存使用案例 ....................................................................................................... 323 10.5 分页 .................................................................................................................................. 325 10.5.1 分页器类 ............................................................................................................... 325 10.5.2 分页案例 ............................................................................................................... 326 10.6 习题 .................................................................................................................................. 329 10.7 实验 .................................................................................................................................. 330 第 11 章 Django Rest Framework ...................................................................................... 331 11.1 前后端分离 ...................................................................................................................... 331 11.1.1 前后端分离原理 ................................................................................................... 331 11.1.2 RESTful ................................................................................................................. 332 11.2 安装及配置 ...................................................................................................................... 334 11.3 序列化器 .......................................................................................................................... 337 11.3.1 序列化器对象 ....................................................................................................... 338 11.3.2 序列化类 Serializer ............................................................................................... 339 11.3.3 模型序列化类 ModelSerializer ............................................................................. 343 11.3.4 处理嵌套对象 ....................................................................................................... 346 11.3.5 反序列化 ............................................................................................................... 348 11.4 验证和保存 ...................................................................................................................... 349 11.5 习题 .................................................................................................................................. 352 11.6 实验 .................................................................................................................................. 353 第二部分 “三酷猫”网上教育服务系统实战项目 第 12 章 项目整体设计及示例............................................................................................. 356 12.1 任务分工 .......................................................................................................................... 356 12.2 需求获取及分析 .............................................................................................................. 357 12.2.1 整体需求 ............................................................................................................... 358 12.2.2 服务功能需求 ....................................................................................................... 359 12.3 系统设计 .......................................................................................................................... 360 12.4 实战结果 .......................................................................................................................... 363 12.4.1 项目启动环境搭建 ............................................................................................... 363 12.4.2 前后端项目实现效果 ........................................................................................... 364 12.5 前后端分离示例 .............................................................................................................. 366 12.5.1 前后端项目建立 ................................................................................................... 366 12.5.2 让界面更加漂亮 ................................................................................................... 372 12.6 习题 .................................................................................................................................. 376 12.7 实验 .................................................................................................................................. 376 第 13 章 后端功能实现 ....................................................................................................... 378 13.1 后端框架搭建 .................................................................................................................. 378 13.1.1 创建项目 ............................................................................................................... 378 13.1.2 基础配置 ............................................................................................................... 379 13.1.3 模型定义 ............................................................................................................... 382 13.1.4 路由设计 ............................................................................................................... 383 13.1.5 自定义组件开发 ................................................................................................... 385 13.2 后端模块设计框架 .......................................................................................................... 387 13.2.1 模块设计思路 ....................................................................................................... 387 13.2.2 模型实现 ............................................................................................................... 389 13.2.3 模型序列化 ........................................................................................................... 391 13.2.4 视图实现 ............................................................................................................... 391 13.2.5 Admin 注册模型 ................................................................................................... 392 13.2.6 后端内容实现 ....................................................................................................... 393 13.3 后端模块实现 .................................................................................................................. 393 13.3.1 热点新闻模块 ....................................................................................................... 393 13.3.2 操作日志模块 ....................................................................................................... 397 13.3.3 课程管理模块 ....................................................................................................... 399 13.3.4 教师管理模块 ....................................................................................................... 403 13.3.5 商品管理模块 ....................................................................................................... 407 13.3.6 网站统计模块 ....................................................................................................... 409 13.3.7 报名咨询模块 ....................................................................................................... 413 13.4 习题 .................................................................................................................................. 416 13.5 实验 .................................................................................................................................. 416 第 14 章 前端功能实现 ....................................................................................................... 418 14.1 前端框架搭建 .................................................................................................................. 418 14.1.1 创建项目 ............................................................................................................... 418 14.1.2 配置文件 ............................................................................................................... 421 14.1.3 路由文件 ............................................................................................................... 421 14.2 前端功能模块设计 .......................................................................................................... 424 14.2.1 模块设计思路 ....................................................................................................... 424 14.2.2 首页框架设计 ....................................................................................................... 425 14.3 前端功能模块实现 .......................................................................................................... 438 14.3.1 校区栏目 ............................................................................................................... 438 14.3.2 热点新闻栏目 ....................................................................................................... 443 14.3.3 教师栏目 ............................................................................................................... 446 14.3.4 课程栏目 ............................................................................................................... 449 14.3.5 商品栏目 ............................................................................................................... 452 14.3.6 前端访问记录 ....................................................................................................... 455 14.3.7 报名咨询栏目 ....................................................................................................... 456 14.4 习题 .................................................................................................................................. 461 14.5 实验 .................................................................................................................................. 461 第 15 章 安全功能及措施 .................................................................................................... 463 15.1 网站防攻击设计 .............................................................................................................. 463 15.1.1 防 XSS 攻击 .......................................................................................................... 463 15.1.2 防 SQL 攻击 ......................................................................................................... 464 15.1.3 防 CSRF 攻击 ....................................................................................................... 465 15.1.4 防点击劫持攻击 ................................................................................................... 467 15.1.5 防 Host 头攻击 ..................................................................................................... 468 15.2 数据加密 .......................................................................................................................... 468 15.2.1 为什么需要对数据加密 ....................................................................................... 468 15.2.2 前后端分离数据加密案例 ................................................................................... 470 15.3 文件上传安全处理 .......................................................................................................... 474 15.4 其他安全措施 .................................................................................................................. 475 15.5 习题 .................................................................................................................................. 475 15.6 实验 .................................................................................................................................. 476 第 16 章 测试及部署 ........................................................................................................... 477 16.1 项目测试 .......................................................................................................................... 477 16.1.1 测试基础 ............................................................................................................... 477 16.1.2 测试用例 ............................................................................................................... 479 16.2 项目部署前置准备工作 .................................................................................................. 481 16.2.1 前端代码打包 ....................................................................................................... 481 16.2.2 安装部署项检查 ................................................................................................... 482 16.2.3 后端建立静态资源目录 ....................................................................................... 485 16.3 在 Windows 下部署 ......................................................................................................... 485 16.3.1 安装 IIS ................................................................................................................. 486 16.3.2 配置 Web 站点 ...................................................................................................... 488 16.4 在 Linux 下部署 .............................................................................................................. 492 16.4.1 安装 Python ........................................................................................................... 493 16.4.2 安装应用系统 ....................................................................................................... 495 16.4.3 安装及配置 Nginx ................................................................................................ 497 16.5 对域名等的支持 .............................................................................................................. 498 16.6 习题 .................................................................................................................................. 498 16.7 实验 .................................................................................................................................. 499 附录 A Vue.js 使用介绍 ...................................................................................................... 500 附录 B Jinja2 过滤器 .......................................................................................................... 525 附录 C ModelAdmin 属性清单 ............................................................................................ 530 附录 D ModelAdmin 方法清单 ............................................................................................ 534 附录 E 赠送代码使用清单 ................................................................................................... 538 附录 F 前后端项目常用命令汇总 ........................................................................................ 542 后记 ....................................................................................................................................... 545