当前位置:   article > 正文

RE:Working outside of application context_runtimeerror: working outside of application conte

runtimeerror: working outside of application context.

目录

RuntimeError: Working outside of application context.

解决方法1:可以选择人为入栈。

解决方法2:可以使用with语句(不了解with语句用法的同学请见下文)。


RuntimeError: Working outside of application context.

  1. from flask import Flask, current_app
  2. app = Flask(__name__)
  3. a = current_app
  4. 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入栈。

解决方法1:可以选择人为入栈。

  1. from flask import Flask, current_app
  2. app = Flask(__name__)
  3. ctx = app.app_context()
  4. ctx.push()
  5. a = current_app
  6. d = current_app.config["DEBUG"]
  7. ctx.pop()

解决方法2:可以使用with语句(不了解with语句用法的同学请见下文)。

  1. from flask import Flask, current_app
  2. app = Flask(__name__)
  3. with app.app_context(): # Create an :class:`~flask.ctx.AppContext`.
  4. a = current_app
  5. d = current_app.config['DEBUG']

那么为什么可以这样写呢?原因就是app.app_context()是一个上下文表达式,它返回了一个上下文管理器AppContext(),在class AppContext(object)中实现了

参考:https://zhuanlan.zhihu.com/p/53465421

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号