《Flask Web开发》这本书中的一些坑

wushaojun 2018-08-16

书的代码有点旧,github地址的代码是新的,不过有的还是会报错,我觉得也有可能是作者用心良苦,因为找bug的时候,我学到了不少东西,23333。

1.书上不少代码都是基于 python manager.py shell来演示的。不过github的是基于Flask shell的,所以玩法要参考新手册

新代码里面主文件也没有manager.py,而是flasky.py

所以python manager.py shell就得换成这样的写法。

《Flask Web开发》这本书中的一些坑

2.git 8b那个分支的代码,运行是报错的

说是查不到users表,看了下配置文件,默认运行是dev模式,dev模式下的sqlite文件都没有生成,不报错就奇怪了,要在app工厂里面加上db.create_all(),当然也可以在shell里面手动运行这个代码,放在工厂里面也没有关系,因为如果数据库文件已经存在db.create_all()什么都不会做的,至于会不会影响性能还不知道。

直接加db.create_all() 报错: No application found. Either work inside a view function or push an application context.

那肯定是没有上下文了。

可以用with app.app_context()或者app_context.push()的方法来引入上下文。

不过push的方法是要注意的,每次app.app_context()返回的上下文是不同的对象,并不是单例,所以要有一个变量才存储它,用完pop,而不能这样:

《Flask Web开发》这本书中的一些坑

正确的是:

《Flask Web开发》这本书中的一些坑

这样就不会有什么问题。

3.待续。

《Flask Web开发》这本书中的一些坑

相关推荐