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)