0

我有main.pyapp.pyapp.py包含create_app()返回app对象。main.py来电create_app()。我必须在main.py. 这个全局对象app作为输入参数。这在 python 中对我来说似乎很复杂。当应用程序启动时,我如何可能实现这个全局对象构造?

具体来说,我正在使用flask_oidc并且需要构造一个oidc = OpenIDConnect(app)inmain.py并使oidc对象在其他控制器 .py 文件中可用。此oidc对象将存储用户信息并验证用户是否已通过身份验证。

任何建议和见解都值得赞赏。

4

1 回答 1

1

您可以创建一个模块,oidc在应用程序启动时初始化您的对象

helper.py

oidc = None # global instance

def init_oidc(app):
  # initalise the oidc here and assign to the global variable
  global oidc
  oidc = OpenIDConnect(app)
  return oidc

main.py

import init_oidc from helper


app = create_app()
# init only once at the start of the application
oidc = init_oidc(app)

在其他控制器文件中 sample_controller.py

import oidc from helper

# use the same oidc here

另一种选择是创建一个带有属性 oidc 的单例类,如果您需要其他方法以及 oidc 会很有帮助

于 2021-05-10T10:03:07.143 回答