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

本文分享了在使用Python Flask框架进行开发时遇到的问题及解决方法,包括代码更新导致的错误、不同环境下代码运行差异等,并详细介绍了如何通过调整代码和配置解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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,而不能这样:


正确的是:


这样就不会有什么问题。

3.待续。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值