专栏首页Haytham的原创技术文章《Flask Web开发 基于Python的Web应用开发实战》简评
原创

《Flask Web开发 基于Python的Web应用开发实战》简评

指路牌

《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的人一点用处。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 不同方式实现集群的可行性 && 部分不建议踩的坑

    1.System has not been booted with systemd as init system (PID 1). Can't operate.

    HaythamXu
  • Haytham个人博客开发日志 -- Flask+Vue基于token的登录状态与路由管理

    这是一篇个人博客搭建的记录博客,也是一篇关于Flask和Vue的简单"工具书",最后的代码会包含Web开发中常用的功能。(不全,只是使用频率相对高的)

    HaythamXu
  • 区块链 Hello World -- 基于以太坊的投票Dapp

    准备接手一个IPFS+Ethereum的项目,先学习一下Ethereum,并尝试完成一个Hello World。

    HaythamXu
  • Flask Web开发:基于Python的Web应用开发实战

    本书共分三部分,全面介绍如何基于Python微框架Flask进行Web开发。首部分是Flask简介,介绍使用Flask框架及扩展开发Web程序的必备基础知识。第...

    用户3157710
  • ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS、C...

    葡萄城控件
  • 微软以Apache许可协议开源ASP.NET MVC

    微软开发部门副总裁Scott Guthrie宣布,ASP.NET MVC及相关项目将在Apache许可证下开源,托管在CodePlex上。ASP.NET MVC...

    张善友
  • 生信流程大全-基于nextflow的nf-core

    题目:The nf-core framework for community-curated bioinformatics pipelines

    生信技能树
  • WCF,Net remoting,Web service

    今天看到WCF,说是整合了Net remoting,Web service。。。下面列一下概念。 一 WCF 概括地说,WCF具有如下的优势:    ...

    阿新
  • 【解密】被盗信用卡数据销赃过程

    过去一年严重的数据泄漏事件层出不穷。最近的大案是家得宝(美最大家居建材零售商)在长达5个月的时间里被盗取5600万客户个人和信用卡信息。 这是一波使用复杂尖端科...

    小莹莹
  • ElasticSearch(7.2.2)-es之refresh操作

    cwl_java

扫码关注云+社区

领取腾讯云代金券