Python Flask 无法访问蓝图中的应用程序
Python Flask can't access app inside Blueprint
我一直在尝试用 flask 构建一个 keycloak oidc 身份验证流程。
在使用 oidc 之前,我需要在我的 /auth 蓝图中初始化 oidc 变量。
我听不懂 运行.
from flask import Blueprint, current_app
from flask_oidc import OpenIDConnect
auth = Blueprint('auth', __name__, static_folder="static", template_folder="templates")
app = current_app._get_current_object()
with app.app_context():
oidc = OpenIDConnect(app)
我收到以下错误:
RuntimeError: Working outside of application context.
如何使用蓝图中的 OpenIDConnect?
我知道类似的问题已经被问过多次,但我无法理解 运行 他们的解决方案。
如果您使用 Flask 应用工厂模式,我建议使用 init_app
方法初始化 Flask-OIDC
。
一些示例代码:
from flask import Flask
from flask_oidc import OpenIDConnect
oidc = OpenIDConnect()
def create_app():
app = Flask(__name__)
# Initialize OIDC
oidc.init_app(app)
return app
现在,如果您需要访问实例,您可以从您的应用程序导入 oidc
,例如 from app import oidc
。
https://flask-oidc.readthedocs.io/en/latest/#flask_oidc.OpenIDConnect.init_app
我一直在尝试用 flask 构建一个 keycloak oidc 身份验证流程。
在使用 oidc 之前,我需要在我的 /auth 蓝图中初始化 oidc 变量。 我听不懂 运行.
from flask import Blueprint, current_app
from flask_oidc import OpenIDConnect
auth = Blueprint('auth', __name__, static_folder="static", template_folder="templates")
app = current_app._get_current_object()
with app.app_context():
oidc = OpenIDConnect(app)
我收到以下错误:
RuntimeError: Working outside of application context.
如何使用蓝图中的 OpenIDConnect? 我知道类似的问题已经被问过多次,但我无法理解 运行 他们的解决方案。
如果您使用 Flask 应用工厂模式,我建议使用 init_app
方法初始化 Flask-OIDC
。
一些示例代码:
from flask import Flask
from flask_oidc import OpenIDConnect
oidc = OpenIDConnect()
def create_app():
app = Flask(__name__)
# Initialize OIDC
oidc.init_app(app)
return app
现在,如果您需要访问实例,您可以从您的应用程序导入 oidc
,例如 from app import oidc
。
https://flask-oidc.readthedocs.io/en/latest/#flask_oidc.OpenIDConnect.init_app