Python ';当用户通过身份验证时';烧瓶

Python ';当用户通过身份验证时';烧瓶,python,flask,global-variables,global,flask-login,Python,Flask,Global Variables,Global,Flask Login,目前,我在原型中使用以下代码: @app.before_first_request def init(): global project project = user_project.Project() project.init() 但是,我现在已经使用flask\u login编程了一个用户登录。因此,我需要将此功能更改为在用户登录后触发,而不仅仅是在首次请求站点时触发 我尝试了@login_required,但是,这并没有显式启动此函数 这是一个常见问题,Django和Flask都使

目前,我在原型中使用以下代码:

@app.before_first_request
def init():
 global project
 project = user_project.Project()
 project.init()
但是,我现在已经使用flask\u login编程了一个用户登录。因此,我需要将此功能更改为在用户登录后触发,而不仅仅是在首次请求站点时触发


我尝试了@login_required,但是,这并没有显式启动此函数

这是一个常见问题,Django和Flask都使用了一个称为“信号”的概念

让用户登录函数发出信号,并让init函数监听信号(
connect()

请遵循以下指南:

这一点更切题:

没有

user_logged_in_signal.connect(init, app)

也似乎可行且易于阅读

这是一个有益的开始。我确实有几个问题:首先,我有点困惑,我应该在上面的init函数上放置什么包装器来连接()或侦听信号。是@connect还是这部分过程是如何工作的?你不知道
user\u logged\u in\u signal.connect(init,app)
让它监听信号看起来你可以把这个装饰器放在
init
的正上方:
@user\u logged\u in\u signal.connect\u通过(app)
。上面的示例我正在尝试,但收到以下错误:TypeError:\uuuu call\uuuu()正好接受3个参数(给定2个),我将追溯到它调用的内容,查找如何使用该函数,并添加必要的参数
@user_logged_in_signal.connect_via(app)
def init(sender, user, **extra):
   global project
   project = user_project.Project()
   project.init()
user_logged_in_signal.connect(init, app)