MoreRSS

site iconGrey Li | 李辉修改

编程和写作爱好者,出版多本Flask开发相关书籍
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Grey Li | 李辉的 RSS 预览

回响计划:读者故事收集

2025-12-06 10:47:46

不管你是我的书和文章的读者,我的演讲和播客的听众,还是我的项目和活动的参与者,我都很想听听关于你与这些“作品”之间的故事。作为这一个人生阶段的回望,我想知道我过去这些年创作的内容和读者建立了怎样的连接,又产生了哪些影响。期待听到你的回响。

如果你愿意分享的话,可以通过下面的方式投稿:

  • 发送邮件到 [email protected]。投稿可能会被公开(邮箱地址不会),你可以留一个喜欢的署名
  • 如果不希望故事被公开,请发送邮件到 [email protected]

不一定非得是惊心动魄的故事,也可以是简单的、甚至有点好笑的日常连接,比如:

《Flask Web 开发实战》买来后一直没有看,后来用来垫显示器了。这本书厚实又稳重,陪我度过了三年的工作时光。

《Flask 从入门到进阶》正式发售

2025-11-23 22:25:36

经过五年的写(拖)作(延),我的新书《Flask 从入门到进阶》终于出版了!作为《Flask Web 开发实战》的全新升级版,新版本在原书的基础上进行了大量更新和调整,以便适应当下的技术栈。目前已经有现货可以购买:

至此我在 Flask 这条人生支线的探索也算圆满了。我从大二自学 Python 和 Flask,毕业前开始写作《Flask Web 开发实战》,这本书出版的同时也成为了 Flask 的维护者,并且为大量相关项目贡献代码。从 2018 年出版到现在,一共重印了 14 次,累计售出 2 万本(包括电子书)。收获了很多好评,在豆瓣上评分也保持在 9 分左右:

到现在终于完成了新版本,而且还拿到了 Armin Ronacher(Flask 作者)的推荐语:

Great resources make great developers, and it’s wonderful to see Flask supported by such high-quality education materials.

感谢一直关注这本书并持续催更的朋友!这本书的完成是我们共同努力的结果 :D

本书主要特色

这本书换了一个新书名,出于一个有点滑稽的原因。书名从《Flask Web 开发实战:入门、进阶与原理解析》变成了《Flask 从入门到进阶:Python Web 开发工程化实践》。不过新的副书名也能更好的概括这本书的特点:以学习 Flask Web 开发作为脉络,你能通过这本书掌握相对完整的 Python Web 工程化实践。从 HTTP 原理到数据库 ORM,从单元测试到代码风格再到性能优化,从 Web 程序开发到 Web API 开发,最后再到不同的部署方式。如果想要深入了解框架,最后还有一章源码解析。同时用两个示例程序串起来各种不同的知识点,比如 Flask 项目的组织方式和技巧,以及 Flask 开发中各类功能的实现。

访问这本书的主页查看详细介绍和章节目录:https://helloflask.com/book/4/

新版本主要变化

下面是一些具体内容上的变化:

版本升级

旧版本 新版本
Flask 1.x Flask 3.x
Python 2.7, 3.6+ Python 3.9+
Bootstrap 4.x Bootstrap 5.x
SQLAlchemy 1.x SQLAlchemy 2.x

技术栈更新

旧版本 新版本
Pipenv PDM
Flask-Mail Flask-Mailman
Flake8 Ruff
Open Iconic Bootstrap Icon
Flask-Moment + Moment.js Day.js
jQuery Vanilla JS
AJAX with jQuery Fetch API
Flask for Web API APIFlask
云平台部署 Docker 部署

示例程序上做了比较大的调整,删掉了旧版本的 SayHelloTodoismCatChat,保留两个程序并做了比较大的重构:

旧版本 新版本
Bluelog Greybook
Albumy Moments
helloflask/demos helloflask/examples

新版本计划是想做一些删减,比如从 700 页减到 500 页,毕竟一本厚书还是让人蛮有压力的。虽然删掉了两个章节,但是写到最后又快到了 700 页,实际的厚度比旧版本还要厚一点点。大概不知不觉又加了很多内容进来。

面向的读者群

本书面向的读者群如下:

  • 了解 Python 基本语法,想要自己动手开发网站的编程爱好者
  • 熟悉 Python,想要从事 Python Web 开发的后端工程师、运维工程师和爬虫工程师
  • 想要从 Django 等其他 Python Web 框架转向 Flask 的 Python 工程师

本书不包含对 Python 的基础知识介绍,所以读者需要事先对 Python 基本语法有一定的了解。另外,Web 开发不可避免的会涉及到一些 HTML、CSS 和 JavaScript 知识,如果你不熟悉这些,可以通过 MDN 提供的 Web 开发入门教程学习,简单了解即可。

推荐语

Great resources make great developers, and it’s wonderful to see Flask supported by such high-quality education materials.

—— Armin Ronacher(Flask 作者,Sentry Platform 副总裁)

作为一名对 Python 充满热忱的软件工程师,一名乐于帮助他人、回馈社区的布道者,Grey 对技术准确性、阅读体验感的无限追求都体现在这本新作中,我相信每一名读者都能在字里行间感受到他的诚意。

—— 管俊(《DevOps 实践指南(第 2 版)》译者,戴尔中国卓越研发集团 DevOps 架构师)

这本书内容翔实,推荐给想要系统学习 Flask 的人。不要漏掉书中的小知识点哦。

—— Hsiaoming Yang(Typlog 创始人,Authlib 作者)

关于作者

我是李辉(Grey Li),Flask & APIFlask 的维护者,Flask 开发团队(Pallets Team)成员, HelloFlask 社区和代码厨房社区创建者,微软 Python 方向最有价值专家(MVP)。目前就职于戴尔中国卓越研发集团,担任首席软件工程师。

我热衷于开源软件的应用和推广,为 Flask 等开源项目贡献过大量代码。也曾在 PyCon China、PyCon US、COSCUP、COSCon、CommunityOverCode 等技术大会担任演讲嘉宾。你可以在 GitHub 上看到我的开源项目。

如果你想了解我的新作品或其他动态,可以关注我的 Twitter 和微信公众号,或是加入我的邮件通讯列表

勘误、分享和评价

在阅读过程中如果发现了排版或内容上的错误,欢迎通过下面的方式提交勘误。我会在后续重印时进行修正。感谢反馈!

如果你觉得这本书还不错,欢迎分享到社交网络,或是告诉你的同事和朋友。也欢迎在本书的豆瓣页面标记和评价。

《Flask 从入门到进阶》签名版预售

2025-10-17 18:58:36

五年了,终于等到这一天。《Flask Web 开发实战》的全新升级版《Flask 从入门到进阶:Python Web 开发工程化实践》将于下个月正式发售。和上一版一样,先来预售作者签名版。

签名版

签名版的价格和上一版保持一致,依然是 109。付款方式和详细说明可以访问预售页面查看:

https://helloflask.com/book/4/signed/

签名版除了送 2 张 Flask 贴纸,还会额外送一张我的名片,可以用来当书签或者飞着玩。具体发货时间取决于正式发售时间,虽然不能完全保证,但我会尽量让签名书第一批发出。

新书名

你也许好奇为什么要换一个新书名,而不是作为第 2 版出版,即《Flask Web 开发实战(第 2 版)》。我设想了一些合理解释:因为内容变动比较多,换个更贴切的书名;在副书名里加一个 Python 关键字,更容易被别人搜索到……但背后实际的乌龙是:管理书号的工作人员在录入系统时打错了名字,把《Flask Web 开发实战》写成了《Flash Web 开发实战》。

按照出版规定,如果我想作为原书第 2 版来出版,那么新书名就只能叫《Flash Web 开发实战(第 2 版)》了。诸位应该也不想学 Flash Web 吧?

《Flask 入门教程》第 4 版发布

2025-10-13 21:12:29

即将出版的新书(预计将于本月底发售)变成了一个超强 deadline,它提及的所有东西都要在发售前成为现实。比如写进书里但其实还不存在的 APIFlask 3.0.0 版本,以及这个可以被当作先导材料的《Flask 入门教程》。

面向 Flask 2.x 的旧版本当然没法作为先导材料,所以断断续续花了 26 个小时完成了第 4 版的更新。新版本主要有下面这些变动:

  • 优化全书的内容和措辞
  • 增加对 uv 的介绍
  • 升级到 SQLAlchemy 2.x
  • 针对 Flask 3.1.x 进行内容更新
  • Python 支持版本调整为 3.9+
  • 增加对蓝本、工厂函数的介绍

另外正式加了一章介绍为什么以及如何为本书付费,取代了主页上自愿点击的「付费支持¥10」按钮。考虑到整本书内容完全公开,所以没法阻止读者逃票,但至少我已经克服了「伸手要钱」的羞耻。对于在工作之外挤出的这些时间,我需要一些正反馈。这样可以让自己更认真维护下去,也不会产生怨念。不仅是获得收入,有时还会收到读者的附言感谢,这给我的生活里带来了很多随机的开心时刻。

写新版本的过程中有时也会想,现在跟 AI 说一句「帮我用 Flask 写一个 Watchlist 程序」就大概能实现的程序,还有人愿意来读教程吗?我想至少,在通过教程来学习编程可以让你说一句「我真厉害」,而不仅仅是一句「AI 真厉害」。

另外这个教程最早是在 2019 年发布的,六年过去了,部署章节介绍的 PythonAnywhere 的 UI 和功能基本没有任何改变。我只需要更新 Python 版本选择那个页面的图片,其他部分不需要任何改动。有一种值得托付终生的感觉。希望可以做出来有这样品质的产品和作品。

最后附上相关链接:

邮箱服务中断乌龙

2025-08-26 19:09:03

七月底,因为 SendGrid 不再提供免费额度,我开始寻找替代服务。在给 greyli.com 这个域名配置新的邮件服务 DNS 的时候,某些原因一直没成功。尝试过程中手贱把已有的几条邮件相关的 MX 和 CNAME 记录给暂停了。

一个月后的今天,发现注册某个服务总是收不到验证码,这时才发现我当时是把 [email protected] 的邮箱服务的 MX 记录给暂停了。整整一个月没法收到邮件,我太蠢了。

如果哪位朋友在这一个月内(2025/7/25 – 2025/8/26)给我发了邮件,请不要恨我,我只是没有看到。如果可以的话,麻烦再重新发一遍吧。

梦的河流

2025-07-05 11:43:40

家西边有一条小河。水源从山上来,经过幽深的地下,一路到这里,从一个废弃的水闸流出来。冬暖夏凉,清澈幽静。

对村里人来说,它叫「洗衣沟」。大人们常常聚集在这里拿着棍子敲打衣服。洗衣粉的袋子随手丢在河边。夹着土,叠了一层又一层。

对那时候的孩子们来说,这里是一个游乐场。在高高的水闸台子上往下扔石头。用石块在水里筑起小小的水坝。在河两边挖一些黄色的黏土,然后坐在台子上玩泥巴。黏土摔在粗砺的水泥台子上,常常会粘起一些半透明的小石子。于是我们做出来水晶手枪、动物和坦克。玩够了之后再还给土地。

过年的时候,我们会往水里扔鞭炮。除了普通的炮和有塑料外壳的「鱼雷」,印象最深的是一种在爆炸之前会旋转发光的炮。只在一家小店可以买到。据说是从经过国道的货车上掉下来的一箱炮,包装上是看不懂的英文。它在水下旋转,闪出五颜六色的光。光透过水变得缓慢而绚烂,像是发生在另一个世界的景象。

我们家买了洗衣机的时候,邻居们都过来参观。后来村子里的洗衣机越来越多,去河边洗衣服的人越来越少。偶然会见到有人去洗冬天的棉衣或是工厂的工服,总之是太脏太费水的东西。不管怎样,洗衣沟的水还是那样清澈,不知疲倦地流淌着,只不过岸边和洞深处多了很多水草。水草越长越多,直到占领了所有空白的水域。

再后来,河的右岸开了一家养鸭场。他们修了一条管道,把粪便排进河里去。下游的鱼塘主不愿意了,争执不下,就在上游用推土机筑了一个大坝,把整个河流硬生生地截断。人们在河边扔的垃圾也越堆越高。有人把成堆的蒜苗倾倒在这里,沤烂后发出难闻的味道。小河无聊的时候,也许会计算距离下一次建设美丽乡村还要多久。而它没想到的是,先等来的却是一场谋杀——左岸的砂石场经过一次扩建,把水闸连同河流都填平压在土下。他们需要可以挣钱的土地,不需要一条无用的河流。

面对垃圾、粪便、切割和覆灭,河流能做什么呢? 它什么也做不了。面对人类,它只是一个被征服和战胜的对象。

不会再有大人一边洗衣服一边大声地聊天。也不会再有孩子在那里玩水和泥巴,放鞭炮,用树叶叠出能舀水的勺子。

我在电脑里翻了很久,终于找到三张拍摄于 2013 年左右的照片。翻照片的过程里,我想到小学暑假住过的、散发着臭水沟气味的望京城中村,还有高中学校旁边短暂住过的小村子。再次想起的时候才发现它们已经全都不见了。

它们变成梦的河流,不再滚烫,也不再转动,只剩下空白。

#清空草稿箱计划# 原文创建于 2023 2 6 日,过年回家发现小河不见了。标题灵感来源于伍佰 & China Blue 的《梦的河流》。