Python是当今最流行的编程语言之一,Web开发领域自然无法缺少Python的身影。Python Web发展过程中诞生了数十种框架,其中Django框架因简洁、优秀且实用的结构和良好的开发效率,受到了广大Web开发工程师的喜爱。
Django是一个基于Python的开源Web应用框架,它提供了一套强大的工具和功能,用于快速开发高质量、高效率的Web应用程序。Django的作用在于简化Web开发过程,通过提供可重用的组件和丰富的功能,使开发者能够专注于业务逻辑的实现,从而加速项目的开发周期并提高代码质量。
本书在Windows上基于Python3.12与Django5.0对Django框架相关的知识进行讲解,并以此为基础利用Django框架实现了一个完整的电商平台。本书分为12章,其中前6章介绍了Django的基础知识,包括Django概述、路由系统、模型、模板、视图、身份验证系统;第7~12章从需求与前期准备着手,逐步实现了完整的Django Web项目。
本书附有源代码、测试题、教学课件等资源,为帮助初学者更好地学习本书中的内容,还提供了在线答疑,希望得到更多读者的关注。
本书既可作为高等院校本、专科计算机相关专业Django框架课程或Python进阶课程的专用教材,也可作为供自学者使用的辅助教材,是一本适合具有Python语言基础的读者使用的中级教材。
特色1:理实一体,服务职业教育
本书按照“教学做一体化”的思维模式构建内容体系。本书以技能培养为核心任务,按照“螺旋形”的提升模式将内容组织为三部分:Django概述(第1章)、Django框架基本使用部分(第2~6章)和项目实践部分(第7~12章),使学生从认识Django框架到掌握Django框架的使用,按照“单个技能点练习—实战项目技能练习”的练习过程,快速提升学生的专业技能,为“理实一体”的职业教育理念提供教材和资源支撑。
特色2:项目贯穿,服务教育教学
根据培养“项目经验”的核心任务,按照“螺旋形”提升的模式,本书为配置了大量的实例,并设计了一个实战项目——小鱼商城,按照“基础示例—实战项目”的练习过程,快速提升学生的专业技能和项目经验。更加符合职业教育的要求,也更加符合教学的规律和学习的规律。
特色3:立体设计,服务课程建设
本书采用新形态立体化设计,配套了丰富的数字化教学资源,包括教学大纲、教学设计、教学PPT、测试题、源代码、习题答案等,丰富了学习手段和形式、提高了学习的兴趣和效率,全方位立体化服务Python Web开发课程建设。
第1章 Django概述 1 1.1 认识Django 1 1.2 安装Django 2 1.2.1 Django版本选择 2 1.2.2 创建虚拟Python环境 3 1.2.3 使用pip安装Django 5 1.3 创建第一个Django项目 6 1.3.1 新建Django项目 6 1.3.2 项目结构说明 8 1.3.3 运行开发服务器 8 1.3.4 Django项目配置 10 1.3.5 在项目中创建应用 12 1.4 Django之MTV模式 14 小结 15 习题 15 第2章 路由系统 17 2.1 认识路由系统 17 2.1.1 HTTP请求处理流程概述 18 2.1.2 URL配置 18 2.2 路由转换器 20 2.2.1 内置路由转换器 20 2.2.2 自定义路由转换器 20 2.3 使用正则表达式匹配URL 22 2.4 路由分发 24 2.5 向视图函数传递额外参数 26 2.6 URL模式命名与命名空间 27 2.6.1 URL模式命名 27 2.6.2 使用reverse()函数反向解析URL 28 2.6.3 应用的命名空间 29 2.6.4 实例命名空间 31 小结 33 习题 33 第3章 模型 35 3.1 定义与使用模型 35 3.2 模型的字段 39 3.2.1 字段类型 39 3.2.2 关系字段 41 3.2.3 字段的通用参数 43 3.3 模型的元属性 44 3.4 模型管理器 46 3.4.1 重命名管理器名称 46 3.4.2 自定义管理器 46 3.5 QuerySet对象 47 3.5.1 获取QuerySet对象 47 3.5.2 QuerySet对象的特性 48 3.6 数据的增删改查 49 3.7 F对象与Q对象 52 3.8 多表查询 53 3.9 执行原生SQL语句 56 小结 56 习题 57 第4章 模板 59 4.1 模板引擎与模板文件 59 4.2 模板文件的使用 60 4.3 模板语言 61 4.3.1 变量 62 4.3.2 过滤器 63 4.3.3 标签 66 4.3.4 自定义过滤器和标签 71 4.4 模板继承 77 4.5 Jinja2 79 小结 83 习题 83 第5章 视图 85 5.1 认识视图 85 5.2 请求对象 86 5.3 QueryDict对象 90 5.4 响应对象 91 5.4.1 HttpResponse类 91 5.4.2 HttpResponse的子类 94 5.5 生成响应的便捷函数 96 5.5.1 render()函数 96 5.5.2 redirect()函数 98 5.5.3 get_object_or_404()函数 99 5.5.4 get_list_or_404()函数 99 5.6 视图装饰器 99 5.7 类视图 100 5.8 通用视图 101 5.8.1 通用视图分类 101 5.8.2 通用显示视图与模型 101 5.8.3 修改查询集结果 101 5.8.4 添加额外的上下文对象 102 5.9 异步视图 102 小结 102 习题 102 第6章 身份验证系统 104 6.1 User对象 104 6.2 权限与权限管理 107 6.2.1 默认权限 108 6.2.2 权限管理 108 6.2.3 自定义权限 108 6.3 Web请求认证 108 6.3.1 用户登录与退出 108 6.3.2 限制用户访问 111 6.4 模板身份验证 114 6.5 自定义用户模型 114 6.6 状态保持 115 6.6.1 Cookie 115 6.6.2 Session 118 小结 122 习题 122 第7章 电商项目——前期准备 124 7.1 项目需求 124 7.2 模块归纳 133 7.3 项目开发模式与运行机制 134 7.4 项目创建和配置 135 7.4.1 创建项目 135 7.4.2 配置开发环境 135 7.4.3 配置Jinja2模板 136 7.4.4 配置MySQL数据库 138 7.4.5 配置Redis数据库 139 7.4.6 配置项目日志 140 7.4.7 配置前端静态文件 142 7.4.8 配置应用目录 143 小结 144 习题 144 第8章 电商项目——用户管理与验证 145 8.1 定义用户模型类 145 8.2 用户注册 147 8.2.1 用户注册逻辑分析 147 8.2.2 用户注册后端基础需求的实现 148 8.2.3 用户名与手机号唯一性校验 152 8.2.4 图形验证码 155 8.3 用户登录 158 8.3.1 使用用户名登录 158 8.3.2 使用手机号登录 160 8.3.3 状态保持 161 8.3.4 首页展示用户名 162 8.3.5 退出登录 164 8.4 用户中心 165 8.4.1 用户基本信息 165 8.4.2 添加邮箱 168 8.4.3 邮箱验证 169 8.4.4 省市区三级联动 175 8.4.5 新增与展示收货地址 180 8.4.6 设置默认地址与修改地址标题 186 8.4.7 修改与删除收货地址 188 8.4.8 修改登录密码 191 小结 192 习题 193 第9章 电商项目——商品数据的呈现 194 9.1 商品数据库表分析 194 9.2 导入商品数据 197 9.3 呈现首页数据 201 9.3.1 呈现首页商品分类 201 9.3.2 呈现首页商品广告 205 9.4 商品列表 207 9.4.1 商品列表页分析 207 9.4.2 呈现商品列表页数据 209 9.4.3 获取商品分类 213 9.4.4 列表页面包屑导航 216 9.4.5 列表页热销排行 217 9.5 商品搜索 220 9.5.1 准备搜索引擎 220 9.5.2 渲染商品搜索结果 223 9.5.3 搜索结果分页 224 9.6 商品详情 225 9.6.1 展示商品SKU信息 225 9.6.2 展示商品SKU规格 228 9.7 用户浏览记录 230 9.7.1 浏览记录存储方案 230 9.7.2 保存和查询浏览记录 232 小结 234 习题 234 第10章 电商项目——购物车 235 10.1 购物车数据存储方案 235 10.1.1 登录用户购物车数据存储方案 235 10.1.2 未登录用户购物车数据存储方案 236 10.2 购物车管理 238 10.2.1 购物车添加商品 238 10.2.2 展示购物车商品 242 10.2.3 修改购物车商品 244 10.2.4 删除购物车商品 247 10.2.5 全选购物车 249 10.2.6 合并购物车 251 10.3 展示购物车缩略信息 252 小结 255 习题 256 第11章 电商项目——订单 257 11.1 结算订单 257 11.1.1 接口定义 257 11.1.2 后端逻辑实现 258 11.1.3 前端页面渲染 262 11.2 提交订单 264 11.2.1 定义订单表模型 264 11.2.2 保存订单信息 266 11.2.3 呈现订单提交成功页面 269 11.3 基于事务的订单数据保存 271 11.3.1 Django中事务的使用 271 11.3.2 使用事务保存订单数据 271 11.4 基于乐观锁的并发下单 273 11.5 查看订单 276 小结 279 习题 279 第12章 电商项目——支付与评价 280 12.1 支付宝开放平台介绍 280 12.2 对接支付宝 280 12.2.1 支付信息配置 281 12.2.2 订单支付功能 285 12.2.3 保存订单支付结果 289 12.3 商品评价 291 12.3.1 评价订单商品 291 12.3.2 详情页展示商品评价 295 12.3.3 商品列表页展示评价数量 297 小结 297 习题 298 参考文献 299