# Python全栈开发:CRM项目实战与权限组件精讲

课程导学

本课程聚焦于企业级CRM系统的完整开发流程,围绕客户管理、权限控制、分页封装等核心模块展开,帮助学员在实战中掌握Django框架的高级应用技巧。课程从项目搭建到功能迭代,层层递进,兼顾前后端交互与代码规范的落地实践。

---

章节要点

**Day66|项目启动与基础架构**

本阶段是课程的核心起点。讲师首先通过需求分析,厘清了CRM系统的业务边界与功能目标,帮助学员建立"从需求到设计"的全局思维。随后进入表结构设计环节,详细拆解了客户、用户、公户/私户等核心模型之间的关系与字段规划,这是后续所有功能开发的数据基石。

登录模块采用原生认证流程实现,重点讲解了会话管理与安全校验的要点;注册部分则引入了 **ModelForm** 的用法,展示了如何利用表单自动完成数据验证与入库,减少重复代码的同时提升开发效率。

**Day67|列表展示与分页封装**

客户列表页的开发涉及多个前端交互细节。讲师系统梳理了列表渲染的数据流:从视图层查询集处理,到模板层循环输出,再到样式控制,每一步都有明确的实现规范。

分页是本阶段的另一个重点。课程从基础的页码生成入手,逐步优化至展示"最多页码数"的简洁布局,并解决了当前页定位、上一页/下一页导航等问题。最终,讲师将分页逻辑封装为一个可复用的 **Pager类**,使不同页面的分页功能都能通过统一接口调用,大幅提升代码复用率。此外,还穿插讲解了Git的基础操作(clone、push、pull)和PyCharm中的Git集成方式。

**Day68|增删改查与权限校验**

客户的新增与编辑是两个高频操作。讲师在讲解中特别强调了"合并新增与编辑视图"的设计思路——通过判断URL中的ID是否存在,在同一视图中完成两种操作,减少代码冗余。

公户与私户的区分是CRM系统的重要特性。本阶段详细讲解了两种户类型的展示逻辑,以及基于登录状态的权限校验机制,为后续更细粒度的权限控制打下基础。

**Day69|业务进阶与代码规范**

公私户转换模块是课程的业务难点之一。讲师通过状态字段的更新与页面重定向,演示了完整的数据流转过程。模糊搜索功能则结合了Django ORM的`__icontains`查询语法,实现了高效的关键词匹配。

分页与搜索条件的联动是本阶段的亮点:用户在搜索后翻页,搜索参数能够自动保留,避免重复输入。编辑完成后跳转到源页面的功能,也体现了用户体验层面的细致考量。最后,讲师补充了PyCharm中Git的使用技巧和`.gitignore`文件的配置规范,帮助学员养成项目版本管理的正确习惯。

---

学习建议

- **紧跟节奏**:课程功能环环相扣,前序模块的理解直接影响后续学习,建议按顺序推进。
- **动手实践**:分页封装、公私户转换等核心逻辑务必亲手实现,仅看视频难以内化。
- **善用工具**:熟悉PyCharm的Git集成操作,便于后续项目迭代与团队协作。

课程目录

课程目录69 集
  • 1-1 [day66] CRM项目介绍和需求分析 (49:42).mp4
  • 1-2 [day66] 表结构分析 (01:07:22).mp4
  • 1-3 [day66] 登录的实现 (41:02).mp4
  • 1-4 [day66] 注册的实现(modelform) (52:50).mp4
  • 2-1 [day67] 内容回顾 (34:48).mp4
  • 2-2 [day67] 提供模板+需求 (10:11).mp4
  • 2-3 [day67] 展示客户列表 (47:44).mp4
  • 2-4 [day67] 分页——展示所有页码 (27:25).mp4
  • 2-5 [day67] 分页——展示最多页码 (07:47).mp4
  • 2-6 [day67] 分页——展示最多页码(2) (09:48).mp4
  • 2-7 [day67] 分页——当前页、上一页、下一页 (14:27).mp4
  • 2-8 [day67] 分页封装成类 (16:30).mp4
  • 2-9 [day67] git——clone、push、pull (09:03).mp4
  • 3-1 [day68] 内容回顾 (25:49).mp4
  • 3-2 [day68] 今日项目需求 (02:18).mp4
  • 3-3 [day68] 新增客户 (50:12).mp4
  • 3-4 [day68] 编辑客户 (12:30).mp4
  • 3-5 [day68] 新增客户和编辑客户合并 (11:25).mp4
  • 3-6 [day68] 公户和私户的展示+登录状态校验 (27:44).mp4
  • 3-7 [day68] 认证中间件补充 (04:55).mp4
  • 4-1 [day69] 内容回顾 (31:23).mp4
  • 4-2 [day69] 今日需求 (13:34).mp4
  • 4-3 [day69] 公私户转换 (36:38).mp4
  • 4-4 [day69] 模糊搜索 (22:57).mp4
  • 4-5 [day69] 分页保留搜索条件 (34:11).mp4
  • 4-6 [day69] 编辑后跳转至源页面 (25:45).mp4
  • 4-7 [day69] pycharm使用git、添加gitignore (14:41).mp4
  • 5-1 [day70] 内容回顾 (26:20).mp4
  • 5-2 [day70] 今日需求 (07:42).mp4
  • 5-3 [day70] 跟进记录的管理 (01:01:34).mp4
  • 5-4 [day70] 添加跟进记录区分选择用户 (18:24).mp4
  • 5-5 [day70] 报名表的管理 (52:19).mp4
  • 6-1 [day71] 内容回顾 (57:38).mp4
  • 6-2 [day71] 今日内容概要 (01:25).mp4
  • 6-3 [day71] 公户转私户的问题解决(事务+行级锁) (27:00).mp4
  • 6-4 [day71] 私户的上限 (09:21).mp4
  • 6-5 [day71] 班级管理 (39:09).mp4
  • 6-6 [day71] 课程记录管理 (29:04).mp4
  • 6-7 [day71] 批量初始化学习记录 (28:03).mp4
  • 6-8 [day71] 展示编辑学习记录(modelformset) (34:02).mp4
  • 7-1 [day72] 权限的引入和表结构设计 (42:23).mp4
  • 7-2 [day72] model的书写和数据录入 (29:14).mp4
  • 7-3 [day72] 权限控制的流程梳理 (24:38).mp4
  • 7-4 [day72] 登录后保存权限信息 (26:20).mp4
  • 7-5 [day72] 中间件中校验权限 (27:20).mp4
  • 8-1 [day73] 内容回顾 (29:50).mp4
  • 8-2 [day73] 今日内容概要 (04:00).mp4
  • 8-3 [day73] 个人开发和团队协作开发使用git流程 (50:43).mp4
  • 8-4 [day73] 动态生成一级菜单 (26:42).mp4
  • 8-5 [day73] 一级菜单的优化 (29:05).mp4
  • 8-6 [day73] rbac组件功能整合 (18:59).mp4
  • 8-7 [day73] 动态生成二级菜单 (01:01:29).mp4
  • 9-1 [day74] 内容回顾(重点!!) (52:38).mp4
  • 9-2 [day74] 一级菜单排序 (26:25).mp4
  • 9-3 [day74] 二级菜单默认选中并展开 (16:53).mp4
  • 9-4 [day74] 二级菜单js效果 (07:17).mp4
  • 9-5 [day74] 非菜单权限的归属问题 (44:40).mp4
  • 9-6 [day74] 路径导航 (30:22).mp4
  • 10-1 [day75] 内容回顾 (58:03).mp4
  • 10-2 [day75] 权限控制到按钮级别 (39:49).mp4
  • 10-3 [day75] 角色管理 (36:08).mp4
  • 10-4 [day75] 菜单管理 (38:50).mp4
  • 10-5 [day75] 权限展示 (53:41).mp4
  • 11-1 [day76] 权限组件实现机制(重点!) (47:14).mp4
  • 11-2 [day76] 今日内容概要 (47).mp4
  • 11-3 [day76] 单个权限的新增、编辑、删除 (14:33).mp4
  • 11-4 [day76] 批量操作权限的流程 (01:09:20).mp4
  • 11-5 [day76] 分配权限的流程 (49:13).mp4
  • 11-6 [day76] 权限组件的应用 (01:00:51).mp4