No application found. Either work inside a view function or push an application context.

本文介绍了解决Flask框架中应用上下文缺失错误的方法,通过使用装饰器和app.app_context().push()来创建上下文,确保在非视图函数中也能正确访问Flask应用的上下文。

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

flask报了这个错,字面意思是说没有应用上下文,字面给的解决意见是要么放置在一个视图内,要么提供一个应用(flask)上下文.

查看文档发现文档给了个解决方案:

一个是通过app.app_context().push()来推入一个上下文,第二个是通过with上下文来确定作用在APP上下文区域内的代码.

个人觉得还是通过装饰器的方式来的方便和美观,当然第二种方式也相当优美.

下面是我的解决方法:

1 def sqlalchemy_context(app):
2     def add_context(func):
3         @wraps(func)
4         def do_job(*args, **kwargs):
5             app.app_context().push()
6             result = func(*args,**kwargs)
7             return result
8         return do_job
9     return add_context

然后我使用数据库的地方:

@sqlalchemy_context(APP)
def init_primary_key():
    Model.query.filter_by()
    ...

* 我APP传入方式是因为避免循环导包, 思路是这样,实现方式自己把握好了.

然后问题就可以解决了.

 

转载于:https://www.cnblogs.com/haiton/p/11101476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值