《Flask Web 开发实战》动态

和《Flask Web 开发实战》相关的动态会统一发布到这个主题里,比如某个库的 API 变动,某个重要的勘误更新。

你可以通过把主题状态设置为「监看」来订阅最新动态(需要登陆账号)。

为了保持内容集中,本主题为只读状态,反馈和留言请发到这个主题

公开送书贴存档(共 36 本):

当前最新印次:1-10(2021/5)

第七次印刷了,花了一天时间整理了第六次印刷(1-6)的勘误。

已发布在 GitHub:https://github.com/greyli/helloflask/blob/master/errata/errata1-6.md

详见:https://docs.helloflask.com/book/1/errata/1-6/

同时追加提示两个第四次印刷(1-4)版本漏掉的勘误:

  • P208 第 1 个代码块第 6 行 render_form(form),action=request.full_path 修改为 render_form(form, action=request.full_path)
  • P213 第 1 个附注段落 bootstrap.bundle.min.css 改为 bootstrap.bundle.min.js
1 个赞

微信公众号送出三本书(7/21 开奖)。

1-8 版本付印,发布 1-7 版本勘误(第一版第七次印刷),共 9 处。其中最主要的一处是因为 Werkzueg 新版本变化导致的导入错误:

P126 第一个代码块第一行导入语句 from werkzeug import secure_filename 改为 from werkzeug.utils import secure_filename

感谢本版次大部分勘误(6/9)的贡献者 Yuxiaoy1 :heart:

1-9 版本付印,暂无勘误更新。只补了一个上次漏掉的勘误:

P624 第二个代码块上方文字最后添加提示「使用下面的……Wheel 包(如果出错则需要先执行 pip install wheel 命令来安装 wheel):」

应对有些情况下创建虚拟环境未默认安装 Wheel。

知乎专栏送出三本书(总第 20~22 号赠书,11/11 晚开奖)。

第十次印刷。错误更新见下文,另外有部分描述优化,详见:https://docs.helloflask.com/book/1/errata/1-10/

感谢本版本的勘误贡献者:

错误更正如下:

  • P24 代码清单 1-4 第一行插入导入语句:
import click

  • P116 注意段落第一句「因为 WTForms 会」改为「因为 Flask-WTF 会」
  • P150 第二个代码块第一行 print(Note.query.filter(body='SHAVE')) 改为 print(Note.query.filter(Note.body=='SHAVE'))
  • P164 第一个代码块最后一行中的「relationship」改为「db.relationship
  • P333 第一句「可以在 create() 方法中使用 redirect_url 参数指定上传后跳转的端点或 URL」改为「可以在 config() 方法中使用 redirect_url 参数指定上传后跳转的 URL」。
  • P380 第二个代码块的第一行:
from albumy.notifications import push_new_follower_notifications

改为:

from albumy.notifications import push_follow_notifications
  • P545: 第二个代码块上方的「bluelog 程序包」改为「sayhello 程序包」
  • P595 倒数第二个代码块第一行:
$ heroku login

改为:

$ heroku login -i

同时该代码块下面的附注段落前面插入一句话:「不添加 -i 选项将会打开浏览器进行登陆操作。」

  • P610 代码清单 15-3 第三行:
def init_app(app):

改为:

def init_app(self, app):
  • P613 代码清单 15-7 第七行及其下面四行和源码不一致:
platform = request.user_agent.platform
mobile_pattern = re.compile('android|fennec|iemobile|iphone|opera (?:mini|mobi)')
m = re.match(mobile_pattern, platform)
if m is not None:
    return ''

改为:

platform = request.user_agent.platform
if platform is not None:
    mobile_pattern = re.compile('android|fennec|iemobile|iphone|opera (?:mini|mobi)')
    m = re.match(mobile_pattern, platform)
    if m is not None:
        return ''

Flask 用户调查问卷送出四本书,填写问卷即可参与(预计 7/24 结束抽奖)。

勘误、FAQ 和可改进实现等内容移动到新建立的 HelloFlask 文档站点:

第一版第 12 次印刷,1-11 版本勘误见 https://docs.helloflask.com/book/1/errata/1-11/