获取烧瓶中的用户ID

时间:2018-11-01 01:37:07

标签: python flask login flask-login

注意。未与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即可解决问题)

尝试将函数w / variable调用为flask_login.current_user.id,与Ive相同。

我认为麻烦是因为我通常无法获得用户ID(在app.py运行实例中),并且需要上下文。因此,我尝试了:

with app.test_request_context():

在分配任务之前,用户和访客我都没有。

编辑。我知道我可以做到:

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用“ 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'