这个错误通常表示您在Flask应用程序上下文之外尝试访问Flask扩展或对象。 您需要在应用程序上下文中访问它们。 一种解决方法是在应用程序上下文中使用with语句包装代码块。
例如,以下代码块中的db对象是Flask-SQLAlchemy的实例,如果在应用程序上下文之外调用它,将引发RuntimeException。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
@app.route('/')
def index():
# 下面一行会会抛出 RuntimeError: Working outside of application context
result = db.session.query(User).all()
return render_template('index.html', result=result)
要解决这个错误,可以通过with语句将代码块包装在应用程序上下文中。例如:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
with app.app_context():
# 此处所有代码均在应用程序上下文中
result = db.session.query(User).all()
# ...
@app.route('/')
def index():
return render_template('index.html', result=result)
这将确保您在Flask应用程序上下文中使用db对象,并避免引发RuntimeError。
标签:Working,Python,app,db,应用程序,Flask,报错,result,上下文 From: https://www.cnblogs.com/zhshan/p/17239669.html