251 lines
10 KiB
Markdown
251 lines
10 KiB
Markdown
# Python 零基础到 Web 后端开发教程
|
||
|
||
## 项目作用
|
||
|
||
这是一个面向编程新手的 Python 教学项目。项目将从最基础的语法开始,通过讲解、示例、练习和阶段项目,逐步带领学习者掌握 Python 编程、面向对象、数据库开发、FastAPI、Django,以及后端项目常用的工程化知识。
|
||
|
||
本项目不是只供阅读的代码示例集合,而是一套可以逐课学习、亲手练习、逐步完成项目的课程。每个知识点都会说明它是什么、为什么需要它、如何使用它,以及使用时容易出现哪些错误。
|
||
|
||
## 适合人群
|
||
|
||
- 从未学习过编程的零基础学习者;
|
||
- 学过少量 Python,但基础不够系统的学习者;
|
||
- 希望从 Python 基础过渡到 Web 后端开发的学习者;
|
||
- 希望学习 Django 或 FastAPI,但不知道如何开始的学习者。
|
||
|
||
## 最终学习目标
|
||
|
||
完成全部课程后,你将能够:
|
||
|
||
1. 阅读和编写常见的 Python 程序;
|
||
2. 使用函数、模块、包和异常处理组织代码;
|
||
3. 使用面向对象思想设计类和业务模型;
|
||
4. 编写 SQL,并通过 Python 安全地操作数据库;
|
||
5. 理解 HTTP、JSON 和 RESTful API 的基本原理;
|
||
6. 使用 FastAPI 开发后端接口;
|
||
7. 使用 Django 开发完整的 Web 管理系统;
|
||
8. 为项目添加测试、日志、配置管理和基础部署能力;
|
||
9. 独立完成一个包含数据库、接口和用户认证的后端项目。
|
||
|
||
## 学习路线
|
||
|
||
### 第一阶段:Python 基础语法
|
||
|
||
- 安装 Python 和开发工具;
|
||
- 运行第一个 Python 程序;
|
||
- 变量与基本数据类型;
|
||
- 输入、输出和类型转换;
|
||
- 运算符;
|
||
- 条件判断;
|
||
- `for` 循环与 `while` 循环;
|
||
- 字符串;
|
||
- 列表、元组、字典和集合;
|
||
- 函数;
|
||
- 基础综合项目:命令行记账或通讯录程序。
|
||
|
||
### 第二阶段:Python 进阶
|
||
|
||
- 模块与包;
|
||
- 文件和目录操作;
|
||
- 异常处理;
|
||
- 列表推导式等常用简化写法;
|
||
- 迭代器与生成器;
|
||
- 装饰器;
|
||
- 类型注解;
|
||
- 虚拟环境与依赖管理;
|
||
- 进阶综合项目:多文件任务管理程序。
|
||
|
||
### 第三阶段:面向对象编程
|
||
|
||
- 类与对象;
|
||
- 属性和方法;
|
||
- 构造方法;
|
||
- 实例属性与类属性;
|
||
- 封装;
|
||
- 继承;
|
||
- 多态;
|
||
- 常用特殊方法;
|
||
- 面向对象综合项目:图书管理系统。
|
||
|
||
### 第四阶段:数据库编程
|
||
|
||
本阶段采用精简路线。学习者已经具备数据库、SQL 和 Java 数据库开发基础,因此不再单独讲解关系型数据库、增删改查、关联查询、索引和事务等通用知识,而是重点学习 Python 数据库编程方式以及它与 JDBC、MyBatis、MyBatis-Plus、JPA/Hibernate 的差异。
|
||
|
||
本阶段统一使用 PostgreSQL,不同时维护 MySQL 和 PostgreSQL 两套示例。涉及常见数据库差异时,通过补充说明对照 PostgreSQL 与 MySQL,不影响后续将知识迁移到 MySQL。
|
||
|
||
本阶段共五课:
|
||
|
||
1. `4_1_PostgreSQL与Psycopg入门`:连接远程 PostgreSQL,认识 Python 数据库 API(Database API,DB-API),使用 Psycopg 3 执行参数化 SQL,并与 JDBC 的连接、语句和结果集进行对照;
|
||
2. `4_2_Python数据库事务与数据访问层`:学习提交、回滚、异常处理、批量操作,以及数据访问对象(Data Access Object,DAO)和 Repository 分层;
|
||
3. `4_3_SQLAlchemy基础`:学习 SQLAlchemy 2.x 的 Engine、Session、声明式模型和基本增删改查,并与 JPA/Hibernate、MyBatis-Plus 进行对照;
|
||
4. `4_4_SQLAlchemy关系映射与工程实践`:学习一对多、多对多、级联操作、加载策略、N+1 查询问题和业务分层;
|
||
5. `4_5_数据库综合项目`:使用 PostgreSQL 和 SQLAlchemy 2.x,把第三阶段的内存版图书管理系统升级为持久化版本。
|
||
|
||
本阶段采用两层数据库操作路线:
|
||
|
||
- Psycopg 3 对应 JDBC 驱动层,用于理解连接、游标、参数化 SQL、查询结果和事务;
|
||
- SQLAlchemy 2.x 提供 SQL 工具和对象关系映射(Object Relational Mapping,ORM)能力,其中 ORM 的定位更接近 JPA/Hibernate,并具备部分与 MyBatis-Plus 相似的常规增删改查体验。
|
||
|
||
数据库连接地址、用户名和密码通过本地 `config.toml` 提供,不写入环境变量。仓库只提交脱敏的 `config.example.toml`,真实配置文件必须由 `.gitignore` 排除。课程只使用专用练习数据库和受限账号,不连接生产数据库。
|
||
|
||
### 第五阶段:Web 开发基础
|
||
|
||
- 浏览器、客户端和服务器;
|
||
- HTTP 请求与响应;
|
||
- URL、请求方法和状态码;
|
||
- JSON 数据格式;
|
||
- RESTful API 设计;
|
||
- 使用接口调试工具发送请求;
|
||
- 前端与后端的基本交互过程。
|
||
|
||
### 第六阶段:FastAPI
|
||
|
||
- 创建 FastAPI 项目;
|
||
- 路由和请求方法;
|
||
- 路径参数、查询参数和请求体;
|
||
- 使用 Pydantic 校验数据;
|
||
- 统一响应和异常处理;
|
||
- 依赖注入;
|
||
- 集成 SQLAlchemy;
|
||
- 数据库迁移;
|
||
- 用户注册、登录和身份认证;
|
||
- 自动生成的接口文档;
|
||
- FastAPI 综合项目:任务管理 API。
|
||
|
||
### 第七阶段:Django
|
||
|
||
- 创建 Django 项目和应用;
|
||
- Django 的项目结构;
|
||
- URL、视图和模板;
|
||
- Model 与 ORM;
|
||
- 数据库迁移;
|
||
- 表单和数据校验;
|
||
- Admin 管理后台;
|
||
- 静态文件和媒体文件;
|
||
- 用户、权限和身份认证;
|
||
- Django REST Framework;
|
||
- Django 综合项目:内容或业务管理系统。
|
||
|
||
### 第八阶段:工程化与部署
|
||
|
||
- Git 基础和版本管理;
|
||
- 单元测试与接口测试;
|
||
- 日志记录;
|
||
- 环境变量和多环境配置;
|
||
- 代码格式与质量检查;
|
||
- Docker 基础;
|
||
- Web 服务部署入门;
|
||
- 最终项目整理与复盘。
|
||
|
||
## 建议的学习方式
|
||
|
||
1. 按目录编号依次学习,不要跳过基础章节。
|
||
2. 阅读讲解后,亲手输入示例代码,不要只复制粘贴。
|
||
3. 先独立完成练习,再查看提示或参考答案。
|
||
4. 遇到错误时,先阅读错误信息,并记录自己尝试过的解决办法。
|
||
5. 每学习一小节就运行代码,避免积累大量问题后再统一调试。
|
||
6. 每完成一个阶段,都要完成阶段测试和综合项目。
|
||
|
||
## 每课的基本结构
|
||
|
||
```text
|
||
本课目标
|
||
前置知识
|
||
概念讲解
|
||
完整示例
|
||
运行方法与预期结果
|
||
关键代码解析
|
||
常见错误
|
||
课堂练习
|
||
练习提示与参考答案
|
||
本课小结
|
||
验收标准
|
||
```
|
||
|
||
## 目录命名规范
|
||
|
||
课程采用“阶段目录 → 课程目录”的两级结构,并统一遵守以下规则:
|
||
|
||
- 阶段目录使用 `两位阶段编号_阶段名称`,例如 `01_python基础`。
|
||
- 课程目录使用 `阶段号_课程序号_课程主题`,例如 `1_1_hello_world`。
|
||
- 目录名统一使用下划线 `_` 连接,不使用空格或连字符。
|
||
- 课程主题优先使用中文,例如 `1_2_变量与数据类型`。
|
||
- Python、Web、HTTP、JSON、SQL、FastAPI、Django、Git、Docker、`hello_world` 等通用技术名或教学惯例保留规范英文名称。
|
||
- 普通英文目录名统一使用小写,避免出现不同大小写或多套命名方式。
|
||
|
||
## 计划中的项目目录
|
||
|
||
```text
|
||
Python/
|
||
├── README.md
|
||
├── AGENTS.md
|
||
├── 01_python基础/
|
||
│ ├── 1_1_hello_world/
|
||
│ ├── 1_2_变量与数据类型/
|
||
│ └── 1_3_输入与输出/
|
||
├── 02_python进阶/
|
||
│ ├── 2_1_模块与包/
|
||
│ ├── 2_2_文件与目录操作/
|
||
│ ├── 2_3_异常处理/
|
||
│ ├── 2_4_推导式与简化写法/
|
||
│ ├── 2_5_迭代器与生成器/
|
||
│ ├── 2_6_装饰器/
|
||
│ ├── 2_7_类型注解/
|
||
│ ├── 2_8_虚拟环境与依赖管理/
|
||
│ └── 2_9_python进阶综合项目/
|
||
├── 03_面向对象/
|
||
│ ├── 3_1_Python与Java的类和对象/
|
||
│ ├── 3_2_Python与Java的封装差异/
|
||
│ ├── 3_3_Python与Java的继承和多态差异/
|
||
│ ├── 3_4_Python特殊方法与数据类/
|
||
│ └── 3_5_面向对象综合项目/
|
||
├── 04_数据库/
|
||
│ ├── 4_1_PostgreSQL与Psycopg入门/
|
||
│ ├── 4_2_Python数据库事务与数据访问层/
|
||
│ ├── 4_3_SQLAlchemy基础/
|
||
│ ├── 4_4_SQLAlchemy关系映射与工程实践/
|
||
│ └── 4_5_数据库综合项目/
|
||
├── 05_web基础/
|
||
├── 06_fastapi/
|
||
├── 07_django/
|
||
└── 08_工程化与部署/
|
||
```
|
||
|
||
这只是目录规划示意,不会提前创建全部目录。正式开始某一课时,才会创建对应的阶段目录、课程目录、中文讲义、示例代码和练习;完成当前课程并确认继续后,再创建下一课。
|
||
|
||
## 当前学习进度
|
||
|
||
- 当前阶段:第四阶段——数据库编程。
|
||
- 当前课程:`4_2_Python数据库事务与数据访问层`。
|
||
- 当前状态:第四阶段前两课已完成,并通过 PostgreSQL 连接、成功提交和异常回滚验证。
|
||
- 已完成课程:第一阶段 `1_1_hello_world` 至 `1_14_python基础综合项目`、第二阶段 `2_1_模块与包` 至 `2_9_python进阶综合项目`、第三阶段 `3_1` 至 `3_5`,以及第四阶段 `4_1`、`4_2`。
|
||
- 学习中的课程:无。
|
||
- 已创建课程目录:第一阶段全部课程、第二阶段全部课程、第三阶段 `3_1` 至 `3_5`,以及第四阶段 `4_1`、`4_2`。
|
||
- 下一步:进入 `4_3_SQLAlchemy基础`,学习 Engine、Session、声明式模型和 ORM 增删改查。
|
||
|
||
## 建议环境
|
||
|
||
- 操作系统:Windows 10 或 Windows 11;
|
||
- Python:学习开始时选择当前稳定版本;
|
||
- 编辑器:PyCharm 或 Visual Studio Code;
|
||
- 命令行:PowerShell;
|
||
- 数据库:第四阶段统一使用专用的远程 PostgreSQL 练习数据库;
|
||
- Python 数据库驱动:Psycopg 3;
|
||
- 对象关系映射工具:SQLAlchemy 2.x;
|
||
- 浏览器:Chrome、Edge 或其他现代浏览器。
|
||
|
||
具体版本和安装步骤将在第一课中核对并讲解,避免因为版本变化使用过时的安装方式。
|
||
|
||
## 下一步
|
||
|
||
第三阶段已完成,已经掌握:
|
||
|
||
1. 使用 dataclass 建模图书和会员;
|
||
2. 使用普通业务类协调借书与还书;
|
||
3. 通过组合管理对象关系;
|
||
4. 使用自定义异常表达业务失败;
|
||
5. 使用鸭子类型接入通知器;
|
||
6. 验证正常流程和主要异常流程。
|
||
|
||
第四阶段前两课已经完成,能够使用本地 TOML 配置、Psycopg 3 和参数化 SQL 安全访问远程 PostgreSQL,并通过转账场景掌握事务提交、异常回滚、批量操作以及 Repository/Service 分层。下一步进入 SQLAlchemy 2.x 基础。
|