目前我的登录控制器无法正常工作,因为我似乎无法获取用户名和密码。
我目前正在使用这样的东西:
form_username = str(request.params.get('username'))
db_user = meta.Session.query(User).filter_by(username=form_username)
if db_user is None:
return redirect('auth/error')
无论使用哪个用户名,db_user始终返回True,因此永远不会进入auth / error。我使用shell来玩这个,我可以与数据库建立连接,所以我不确定我在这里做错了什么。
答案 0 :(得分:2)
你走在正确的轨道上;你只需要更进一步。
正如您在上面的评论中提到的,filter_by()
会返回一个Query对象
您需要指定要用于实际运行查询的Query对象的哪个方法并返回一些结果。
在这种情况下,我建议first()
。
db_user = meta.Session.query(User).filter_by(username=form_username).first()
Documentation(我的重点):
如果结果不包含任何行,则返回此查询的第一个结果或无。这导致执行基础查询。