python - 获取烧瓶中的用户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'
但这只是一个例子,真正需要的是将值分配给具有上下文的非局部变量。
解决方案
您可以使用“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'
推荐阅读
- sql - 在 SQL 中每 7 天重复周末的模式
- python - 如何使用 Matplotlib 绘制带有时间戳的实时数据
- python - 适用于 Python 3 的 Kivy 启动器
- ios - React-Native 上 iOS 调试模式下的离线捆绑
- python - 使用 python 从 SNS 主题 ARN 获取 SNS 主题名称
- amazon-web-services - 我有一个 PowerShell 脚本,用于检查 1 个 AWS 账户的 ACM 状态。如何在不使用 IAM 密钥的情况下为多个 AWS 账户扩展它?
- c# - 如何使用不同的取消令牌处理 20~ 个任务/线程
- selenium - 为什么我的硒函数说找不到元素
- amazon-web-services - CloudFormation AWS::CertificateManager::Certificate 自动证书验证
- javascript - Firebase:使用“in”代替“OR”查询