我不知道这意味着什么:
(success, admin_id) = login(email, password)
登录方法如下所示:
def login(email, password):
try:
user = db.session.query(Admin).filter_by(email=email).first()
valid_role = 'Admin'
if valid_role in user.role:
return user
except Exception as e:
print e
return None
它返回TypeError:'Admin'对象不可迭代或ValueError:当我尝试仅返回user.id
时解压缩的值太多。谢谢你的帮助。
答案 0 :(得分:2)
要从您的函数返回多个值(tuple
),您可以执行以下操作:
# when user is admin
return True, user.id
如果用户不是管理员或存在例外情况:
return False, None
因此,对于(success, admin_id) = login(email, password)
,您的函数会以布尔值的形式返回success
状态,admin_id
是有效的用户ID或None
答案 1 :(得分:2)
您的函数返回一个对象;要么Admin()
实例:
if valid_role in user.role:
return user
最后或None
:
return None
两者都不符合函数返回两个值的期望,这是该行所期望的:
(success, admin_id) = login(email, password)
将该行调整为仅接收用户,或修复您的函数以返回用户ID和成功标记。
后者需要您将函数重写为:
def login(email, password):
try:
user = db.session.query(Admin).filter_by(email=email).first()
valid_role = 'Admin'
if valid_role in user.role:
return True, user.id
except Exception as e:
print e
return False, None
现在,您的函数始终返回两个项目,True
和用户 id (不是用户对象),或False
和None
。