注意。未与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'
但这只是一个例子,真正需要的是将值分配给具有上下文的非局部变量。
答案 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'