【发布时间】:2018-11-01 01:37:07
【问题描述】:
注意。与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'
但这只是一个例子,真正需要的是将值分配给具有上下文的非局部变量。
【问题讨论】:
-
你从哪里调用function_a?看起来您已脱离应用上下文。
-
好吧,我在 app.py 中赋值,但 function_a 来自另一个文件(decorators.py)。您能帮我了解如何在上下文中使用装饰器吗?如果可能的话,尽量不要在装饰器上导入 app.py(同时 bcs app 导入装饰器)。谢谢你
标签: python flask login flask-login