赞
踩
目录
RuntimeError: Working outside of application context.
解决方法2:可以使用with语句(不了解with语句用法的同学请见下文)。
- from flask import Flask, current_app
-
- app = Flask(__name__)
-
- a = current_app
- d = current_app.config["DEBUG"]
这样运行就会出现RuntimeError: Working outside of application context.
为什么呢?
原因就是current_app是<LocalProxy unbound>,也就是说在_app_ctx_stack栈为空。
我们都知道在flask中,当一个请求进入的时候,_request_ctx_stack入栈之前,会先检查_app_ctx_stack栈是否为空,如果_app_ctx_stack栈空,则会先将AppContext压入栈中,然后在将RequestContext入栈。
- from flask import Flask, current_app
-
- app = Flask(__name__)
-
- ctx = app.app_context()
- ctx.push()
- a = current_app
- d = current_app.config["DEBUG"]
- ctx.pop()
- from flask import Flask, current_app
-
- app = Flask(__name__)
-
- with app.app_context(): # Create an :class:`~flask.ctx.AppContext`.
- a = current_app
- d = current_app.config['DEBUG']
那么为什么可以这样写呢?原因就是app.app_context()是一个上下文表达式,它返回了一个上下文管理器AppContext(),在class AppContext(object)中实现了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。