《鱼书》这个项目在 Flask 学习圈里出现频率很高,但很多人卡在同一个地方:跟着敲能跑通,合上教程就写不出第二遍。如果你正处在这个阶段,这门课值得花时间,但前提是先搞清楚它补的是哪块缺口。
先确认你缺的是不是这一块
这门课不讲 Python 语法,也不解释什么是 HTTP。它假定你已经能用 Flask 写出「Hello World」级别的路由,知道 @app.route 大概是怎么回事,但一到下面这些场景就开始含糊:
- 静态文件为什么放在特定目录才能被访问,换个路径就 404;
- Jinja2 模板里
{{ }}和{% %}分别能放什么,过滤器除了|length还能干什么; - 用户登录后刷新页面,怎么让「已登录」这个状态在跳转之间不丢;
- 表单提交失败要给提示,但提示信息怎么跟着重定向活下来。
这些都是「会用一点,但说不清楚」的典型症状。《鱼书》项目的价值在于,它把这些问题串在一条真实的业务线里——搜索、展示、收藏、登录——你会在同一个上下文中反复碰到它们,而不是在孤立的小 demo 里各练一遍。
Jinja2 与静态资源这条线,别只当模板语法学
课程中关于静态文件、模板、消息闪现和 Jinja2 的部分,表面上是讲语法,实际处理的是一个更基础的问题:视图函数和页面之间怎么传数据、怎么传状态。
静态文件的访问原理值得单独拎出来看。很多人直到部署时才意识到,Flask 自带的静态文件服务在生产环境里通常是要交给 Nginx 的,理解它的查找规则和 URL 映射方式,能帮你在本地和线上之间少踩一次坑。
Jinja2 部分建议重点留意过滤器与管道命令、以及变量作用域。前者决定你在模板里能不能少写一堆 Python 逻辑,后者直接影响你在 include、宏、继承之间传参时会不会出现「变量明明是空的」这类问题。消息闪现和 SecretKey 放在一起讲,是因为它们共用同一套机制:靠 session 在请求之间暂存数据。把这层关系理清,登录态、表单回显、操作提示这几类需求就不再是各写各的。
配套练习怎么做才不算白做
看这类项目课最容易犯的错,是把「跑通」当成「学会」。建议每看完一个模块,做一次最小改动验证:
- 学完静态文件,试着把资源换到自定义目录,用
static_folder指定,看能否正常加载; - 学完过滤器,给自己项目里的一个字段加自定义过滤器,而不是照抄课程里那个;
- 学完消息闪现,把提示从「成功/失败」改成带具体原因的多条消息,观察页面上的呈现顺序;
- 学完搜索页面,把搜索结果的排序或分页条件改一下,确认自己真的理解数据是怎么从视图流到模板的。
这些改动都不大,但能暴露「以为懂了」和「真的懂了」之间的差距。
看完应该能回答的问题
用下面几个问题自查,如果都能不看资料说清楚,这门课的核心部分就算过关了:
- Flask 是怎么把 URL 映射到静态文件目录的,改成 CDN 或 Nginx 托管后,模板里的引用需要动哪里?
- Jinja2 的过滤器链式调用在什么情况下会踩坑,自定义过滤器要注册在哪里?
- 消息闪现依赖的 session 数据存在哪,SecretKey 变了会发生什么?
- 搜索结果页面里,从用户输入关键词到页面渲染完成,数据经过了哪几个环节?
《鱼书》本身是个不大的项目,但胜在结构完整。把它当成一次「把零散知识缝合成一条线」的练习,比当成一个要背下来的范例更有用。如果你的 Flask 使用还停留在单文件脚本阶段,这门课正好是那个过渡。
慕课实战:Python Flask高级编程《鱼书》项目从零到一开发教程
Python Flask实战教程
编辑点评
深入浅出,实战性强,适合Python后端开发者提升Flask技能。
⭐ 编辑推荐
本教程从零开始,通过《鱼书》项目实战,全面讲解Python Flask高级编程。
课程亮点
课程目录
📁 第8章 静态文件、模板、消息闪现与Jinja2
第8章 静态文件、模板、消息闪现与Jinja2资料.png [493.5 KB]
8-8 过滤器与管道命令.avi [55.0 MB]
8-3 Jinja2的概念.avi [32.1 MB]
8-1 静态文件访问原理.avi [70.7 MB]
8-10 消息闪现、SecretyKey与变量作用域.avi [45.2 MB]
8-11 显示搜索结果页面.avi [67.0 MB]
8-5 流程控制语句 if.avi [15.9 MB]
8-12 页面结构解析.avi [92.5 MB]
8-6 流程控制语句 for in 循环.avi [15.1 MB]
8-7 使用模板继承.avi [28.3 MB]
8-4 在Jinja2中读取字典和对象.avi [9.3 MB]
8-2 模板文件的位置与修改方案_x264.avi [45.0 MB]
8-9 反向构建URL.avi [35.7 MB]
📁 第1章 课程导语
第1章 课程导语文档.zip [1.8 MB]
1-1 开宗明义.avi [15.1 MB]
1-2 课程维护与提问.avi [6.4 MB]
📁 第2章 Flask的基本原理与核心知识
第2章 Flask的基本原理与核心知识资料.zip [1.8 MB]
2-2 准备工作.avi [47.0 MB]
2-8 app.run相关参数与flask配置文件.avi [146.4 MB]
2-10 响应对象:Response.avi [157.8 MB]
2-9 你并没有真正理解 if __name__的作用.avi [80.3 MB]
2-5 设置开发工具的默认解释器.avi [88.0 MB]
2-6 flask最小原型与唯一URL原则.avi [142.9 MB]
2-1 鱼书是一个什么样的产品.avi [57.4 MB]
2-3 使用官方推荐的pipenv创建虚拟环境(很好用哦~).avi [192.4 MB]
2-7 路由的另一种注册方法.avi [127.0 MB]
2-4 开发工具推荐.avi [16.1 MB]
📁 第11章 鱼书业务处理
第11章 鱼书业务处理说明.png [493.5 KB]
11-8 用户注销.avi [24.0 MB]
11-4 我的礼物 一 (使用db.session和filter做查询).avi [54.7 MB]
11-1 最近的礼物(复杂SQL的编写方案).avi [46.1 MB]
11-7 我的礼物 四.avi [73.0 MB]
11-5 我的礼物 二(group_by与funct.count统计联合使用).avi [67.8 MB]
11-11 我的心愿 三 (谈谈重复代码的封装技巧).avi [44.2 MB]
11-3 完成最近的礼物(业务的四种编写方案).avi [74.0 MB]
11-2 链式调用.avi [9.0 MB]
11-9 我的心愿 一.avi [50.6 MB]
11-6 我的礼物 三 (不要在函数中返回元组,而应该返回字典).avi [35.4 MB]
11-10 我的心愿 二 (再谈循环导入的解决方案).avi [54.1 MB]
📁 第7章 书籍详情页面的构建
第7章 书籍详情页面的构建文档.png [493.5 KB]
7-8 详解单页面与网站的区别.avi [55.4 MB]
7-5 重构鱼书核心对象:YuShuBook 上.avi [58.0 MB]
7-6 重构鱼书核心对象:YuShuBook 下.avi [59.1 MB]
7-7 从json序列化看代码解释权反转.avi [65.3 MB]
7-2 使用ViewModel处理书籍数据 上.avi [63.7 MB]
7-3 使用ViewModel处理书籍数据 下.avi [53.3 MB]
7-4 伪面向对象:披着面向对象外衣的面向过程.avi [29.5 MB]
7-1 ViewModel的基本概念.avi [66.5 MB]
📁 第6章 Flask中的多线程与线程隔离技术
第6章 Flask中的多线程与线程隔离技术说明.zip [1.8 MB]
6-4 多线程的优势与好处.avi [51.6 MB]
6-6 对于IO密集型程序,多线程是有意义的.avi [79.4 MB]
6-7 开启flask多线程所带来的问题.avi [145.7 MB]
6-10 线程隔离的栈:LocalStack.avi [134.0 MB]
6-11 LocalStack作为-Stack-的基本用法.avi [111.0 MB]
6-9 线程隔离对象Local.avi [180.4 MB]
6-8 线程隔离.avi [84.7 MB]
6-5 全局解释器锁GIL.avi [206.2 MB]
6-1 什么是进程.avi [153.2 MB]
6-12 LocalStack作为线程隔离对象的意义.avi [82.6 MB]
6-13 flask中被线程隔离的对象.avi [241.8 MB]
6-2 线程的概念.avi [82.3 MB]
6-3 多线程.avi [195.3 MB]
6-14 梳理串接flask的一些名词.avi [215.5 MB]
📁 资料
资料文档.zip [1.8 MB]
fisher(非课程同步代码).zip [5.8 MB]
初始代码.zip [5.5 MB]
📁 第3章 数据与flask路由
第3章 数据与flask路由说明.png [493.5 KB]
3-11 循环引入流程分析.avi [170.1 MB]
3-3 搜索关键字.avi [165.8 MB]
3-4 简单的重构.avi [122.2 MB]
3-5 requests发送http请求及代码的简化手段.avi [247.0 MB]
3-6 requests vs urllib.avi [146.1 MB]
3-8 使用jsonify.avi [40.3 MB]
3-12 找不到视图函数的最终解释与证明.avi [91.9 MB]
3-10 深入了解flask路由.avi [210.6 MB]
3-7 从API获取数据.avi [154.1 MB]
3-1 搜索而不是拍照上传.avi [70.8 MB]
3-9 将视图函数拆分到单独的文件中.avi [146.5 MB]
3-2 数据API.avi [42.7 MB]
📁 第5章 flask核心机制
第5章 flask核心机制说明.png [493.5 KB]
5-4 flask上下文与with语句.avi [256.1 MB]
5-2 AppContext、RequestContext、Flask与Request之间的关系.avi [157.3 MB]
5-1 flask中经典错误 working outside application context.avi [100.9 MB]
5-5 详解上下文管理器的__exit__方法.avi [217.9 MB]
5-6 阅读源码解决db.create_all的问题.avi [282.8 MB]
5-3 详解flask上下文与出入栈.avi [315.5 MB]
📁 第12章 Python与Flask的结合应用
第12章 Python与Flask的结合应用文档.png [493.5 KB]
12-9 使用itsdangerous生成令牌.avi [60.3 MB]
12-21 超权现象防范.avi [28.9 MB]
12-3 callable 可调用对象的意义.avi [66.1 MB]
12-5 HTTPException 二.avi [32.1 MB]
12-6 装饰器app_errorhandler:AOP的应用.avi [41.4 MB]
12-10 重置密码.avi [54.1 MB]
12-2 first_or_404.avi [45.3 MB]
12-25 向他人赠送书籍.mp4 [75.1 MB]
12-13 合理利用数据冗余记录历史状态.avi [45.1 MB]
12-15 完成鱼漂业务逻辑.avi [70.3 MB]
12-1 忘记密码(重置密码流程分析).avi [28.5 MB]
12-8 发送电子邮件 二.avi [46.5 MB]
12-24 撤销礼物与心愿.mp4 [69.1 MB]
12-18 Drift ViewModel 二.avi [29.4 MB]
12-12 鱼漂业务逻辑与Drift模型.avi [42.2 MB]
12-7 发送电子邮件 一.avi [39.8 MB]
12-14 鱼漂条件检测.avi [98.2 MB]
12-11 异步发送电子邮件.avi [85.8 MB]
12-17 Drift ViewModel 一.avi [74.9 MB]
12-16 交易记录页面.avi [40.2 MB]
12-4 HTTPException 一.avi [38.9 MB]
12-20 更好的使用枚举.avi [63.9 MB]
12-22 拒绝请求.mp4 [48.0 MB]
12-19 三种类模式的总结与对比.avi [44.3 MB]
12-23 邮寄成功.mp4 [66.5 MB]
📁 第9章 用户登录与注册
第9章 用户登录与注册资料.png [493.5 KB]
9-16 重定向攻击.avi [30.6 MB]
9-5 自定义基类模型.avi [18.9 MB]
9-13 cookie的应用.avi [49.7 MB]
9-10 自定义验证器.avi [25.7 MB]
9-15 访问权限控制.avi [47.1 MB]
9-14 login_user 将用户信息写入cookie.avi [61.3 MB]
9-8 Python属性描述符实现getter与setter.avi [40.1 MB]
9-6 用户注册.avi [37.9 MB]
9-9 ORM的方式保存模型.avi [20.5 MB]
9-1 viewmodel意义的体现与filter函数的巧妙应用.avi [60.6 MB]
9-11 redirect重定向.avi [20.0 MB]
9-12 cookie.avi [21.8 MB]
9-2 书籍详情页面业务逻辑分析.avi [37.8 MB]
9-4 模型与模型关系.avi [48.4 MB]
9-7 Python的动态赋值.avi [37.4 MB]
9-3 实现书籍详情页面.avi [58.5 MB]
📁 第10章 书籍交易模型(数据库事务、重写Flask中的对象)
10-8 合理使用ajax.avi [29.3 MB]
10-5 灵活使用@contextmanager.avi [13.0 MB]
10-13 重写filter_by.avi [74.4 MB]
10-3 事务与回滚.avi [25.9 MB]
10-1 鱼豆.avi [43.4 MB]
10-9 书籍交易视图模型.avi [65.9 MB]
10-12 再谈MVC中的Model.avi [40.3 MB]
10-11 书籍详情页面.avi [26.3 MB]
10-7 类变量的陷阱.avi [28.7 MB]
10-10 处理时间.avi [11.3 MB]
10-4 Python @contextmanager.avi [45.9 MB]
10-2 思维逻辑锻炼.avi [28.0 MB]
10-6 结合继承、yield、contextmanager、rollback来解决问题.avi [42.7 MB]
📁 第4章 蓝图、模型与CodeFirst
4-6 拆分配置文件.avi [340.8 MB]
4-9 将模型映射到数据库中.avi [148.7 MB]
4-4 request 对象.avi [177.2 MB]
4-7 Model First、Database First与Code First.avi [136.5 MB]
4-3 单蓝图多模块拆分视图函数.avi [160.2 MB]
4-2 用蓝图注册视图函数.avi [119.2 MB]
4-5 WTForms参数验证.avi [256.3 MB]
4-10 ORM与CodeFirst区别.avi [90.5 MB]
4-8 定义第一个模型类.avi [190.8 MB]
4-1 应用、蓝图与视图函数.avi [135.6 MB]适合人群
- Python后端开发者
- Flask框架学习者
学习收获
祝您学习愉快!
学有所成,前程似锦!





![大疆维修,无人机维修教程[66.30GB]](/_next/image?url=https%3A%2F%2Fwww.itzhibei.com%2Fapi%2Fuploads%2Fb6a69810-862f-479c-a529-d66880073ebc.jpg&w=1920&q=75)
