共计 1981 个字符,预计需要花费 5 分钟才能阅读完成。
指路牌
《Flask Web 开发》
《Flask Web 开发 基于 Python 的 Web 应用开发实战》
《Flask Web 开发》是否适合新手入门 Python Web 开发?
正文
《Flask Web 开发 基于 Python 的 Web 应用开发实战》,O’Reilly” 动物书系列 ” 的 ” 狗书 ”,应该是很多 Flask 初学者被推荐使用的入门书,但是这本书真的适合初学者吗?
Python 的 Web 框架非常多,例如 Django、Flask、Tornado、Web.py,Tornado 没有接触过,无法评价,Django 一般都会和 ” 重型 ” 联系在一起,很少会直接推荐给初学者,Flask 和 Web.py 都属于轻型框架,网上有人将 Flask 与 Web.py 对比,有一篇很有意思的 Blog 有兴趣的可以去看一下关于 Flask 和 web.py 的一句话比较 (很老的 blog),孰优孰略有请各位自行选择。
值得一提的是微信公众平台的入门教程文档,就是基于 web.py 编写的
这里要吐槽一下微信公众平台维护文档的团队, 能不能别出这么级的错误 ……
《Flask Web》开发是我 Web 开发的入门书,在第一版的时候就买了,后来书出了第二版,也买了第二版。这篇 Blog 的重点不是讨论 Flask 框架,而是讨论这本书本身,如果你选择学习 Flask,以下意见对你才有意义。
直接抛出结论::这本书并不适合初学者,或者说,” 现在 ” 不适合了。
这个结论是基于以下几个原因
- 模板渲染的内容
- 部分章节国内无法实践
- 内容太过于 ” 系统 ”
以上原因其实有些是有点吹毛求疵的,但是这些观点的出发点是两个:” 对于初学者 ” and “ 想快捷搭建简单 web 服务的开发者 ”。
模板渲染 ” 过时 ” 了 ……… 吗?
这个问题的答案我不得而知,但起码在我心里,模板渲染是 ” 过时的老东西 ”,因为当下流行的是前后端分离,是 React、Vue、Angular 三大前端框架,而不是还需要后台操控的模版渲染。
Flask 与 Jinja2 几乎总是被同时提起的,这本书实现的项目的整体思路都是基于 Jinja2 模板引擎的,这在这本书发行期是没任何问题的,但是现在前端技术的发展已经让这本书的内容跟不上了,现在提倡的是 ” 前后端分离 ”,前后端通过 Rest API 交互。
我个人是直接放弃了模板渲染,直接从 Vue 入手的前端技术。
部分章节国内无法实践
《Flask Web 开发》一个很大的特色点就是整本书就是一个项目,完成了整本书的教程,就是完成一个博客系统,就像书评说的一样,相比于只讲解零散代码的其他书籍,这无疑是很好的。但,” 第六章电子邮件 ” 必是一道坎,因为书中的内容是基于 Gmail 的 …. 众所周知的原因,我们无法使用 Gmail 提供的 SMTP 服务,甚至无法登陆 Gmail,初学者必然需要在网上找寻替代解决方案(我当时是找的 126 的 SMTP 服务替代)。
为什么是必然呢?跳过这一章不行吗?因为这本书的内容一环扣一环,不把这个问题解决,后续的内容就无法推进,对于初学者,答案明显是不行,这是学到一定地步才能做到的。
至于后面第 17 章国内很少使用的云平台就更不提了
内容太过于 ” 系统 ”
这可能是最奇怪的一个原因,” 系统 ” 点难道还错了?当然没错,但是还是那个原因,不适合初学者。在我看来初学者能编写视图函数,操作 ORM,学会使用钩子,配置跨域,已经能够完成一个简单的 web 应用了。而数据库迁移、工厂函数、蓝本、单元测试等,不是一个初学者能 hold 的住的内容?但是这些知识在书中是交叉进行,并且从第二部分开始强制全部内容都是基于工程化结构 (工厂函数、蓝本等) 进行的,这里我在初学时是直接被劝退了的。
即使跳开初学者这一原因,就现在而言,我也不是很喜欢使用 Flask 的工程化结构,为什么?这可能需要先明确一点,” 我为什么要使用 Flask?”, 因为轻便,快捷。我选择 Flask 不是为了开发一个商用工程项目(如果是这个目的肯定就用 SpringBoot 了), 而是为了快,短时间内完成一个 POC,或者在学习集群等技术时构建一个简单的服务,这些需求往往只需要几十行代码就能完成,为什么要自找麻烦的使用工程化的目录结构呢?
最近写的自己的博客系统雏形,配置跨域、视图函数,ORM,基于 web token 的登陆管理,也才不到 140 行
结论
所以这本书的正确打开方式是什么呢?
我个人看来,这本书第 5 章之前的内容 (前 60 页,整本书约 200 页) 是初学者可以看的,会有很多重要概念,但是再往后的,只推荐第 14 章,比较矛盾的点是第 14 章是基于工程化结构编写的,直接看会有一些难度 …… 所以现在这本书在我手里等价于一本工具书,需要的时候翻阅需要的章节,而且大部分时间需要再处理一遍示例代码才能使用,但是从始至终,这本书我都没有系统从头看到尾.
以上内容,希望能给想要以此本书的入门 Flask 的人一点用处。
要获取更多 Haytham 原创文章,请关注公众号 ” 许聚龙 ”: