首页 > 解决方案 > 获取烧瓶中的用户ID

问题描述

笔记。与Get current user id in Flask不重复。

我使用flask_login 和flask,因此要获取当前ID,它只有flask_login.current_user.id。但是当我想使用命令创建变量时会出现问题,例如在我的 app.py 中:

...
curr_user = flask_login.current_user.id

def function_a(curr_user):
    os.mkdir(path + '/' + curr_user)
    return 'Path created successfully'
...

说的是:

AttributeError:“NoneType”对象没有属性“get_id”

仅在运行时(不需要调用,唯一的赋值给 curr_user 做问题)

尝试调用带有变量的函数作为 flask_login.current_user.id 和 Ive 相同。

我认为问题在于我通常无法获取用户的 ID(在 app.py 运行实例中),并且需要上下文。所以,我尝试了:

with app.test_request_context():

在分配之前,我只为用户和来宾获得了 None 。

编辑。我知道我可以这样做:

def function_a():
    os.mkdir(path+'/'+flask_login.current_user.id)
    return 'Path created successfully'

但这只是一个例子,真正需要的是将值分配给具有上下文的非局部变量。

标签: pythonflaskloginflask-login

解决方案


您可以使用“g”将 user_id 保存在应用程序上下文中:

from flask import g

if current_user.is_authenticated():
        g.user = current_user.get_id()

但最简单的解决方案是将用户 ID 传递给您正在调用的函数。

# call this function from inside the app/request context
def function_a(user_id):
    os.mkdir(os.path.join(path,user_id))
    return 'Path created successfully'

推荐阅读