Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶登录的@login_manager.user_loader函数的清晰性_Python_Flask - Fatal编程技术网

Python 烧瓶登录的@login_manager.user_loader函数的清晰性

Python 烧瓶登录的@login_manager.user_loader函数的清晰性,python,flask,Python,Flask,我已经用我的应用程序做了一周了,现在我试图理解在flask登录中使用的以下两个函数之间的区别 @login_manager.user_loader def load_user(email): try: return User.query.filter(User.email == email).first() except: return None @login_manager.user_loader def load_user(email): try: r

我已经用我的应用程序做了一周了,现在我试图理解在flask登录中使用的以下两个函数之间的区别

@login_manager.user_loader
def load_user(email):
  try:
    return User.query.filter(User.email == email).first()
  except:
    return None

@login_manager.user_loader
def load_user(email):
  try:
     return User.query.get(email)
  except:
     None
这两个功能都通过“在我的/登录路径中打印”来显示正确的日志,如下所示

127.0.0.1--[14/Nov/2016 05:24:35]“获取/欢迎HTTP/1.1”302- 127.0.0.1---[14/Nov/2016 05:24:35]“获取/登录?下一步=%2F欢迎HTTP/1.1”200-

但实际上只有后一个函数将我重定向到欢迎页面

前一个函数(顶部的第一个函数)在日志上显示相同的内容,但它不会将我重定向到欢迎页面,而是显示此消息

login\u manager.login\u message=u“请登录以访问此页面。”
有人能给我解释一下这两者的区别吗?看起来你在使用SQLAlchemy,对吗

在第一个函数中,您使用WHERE子句执行SELECT操作,该子句类似于
SELECT*FROM user WHERE email=XXX

在第二个函数中,您正在基于“user”表的主键进行选择。如果主键列名为p,则看起来像是
SELECT*FROM user,其中p=XXX


可能电子邮件不是用户表的主键,因此第一个函数返回
None

是否
email
是用户表的主键?可能不会
Model.query.get
基于主键进行查找。您的第一个函数很可能是基于错误的字段进行查询。(User_id和email是复合键)User_id是主键,email也是主键。是的,我正在使用Flask SQLAlchemy…。我想您的解释可能也验证了我的想法。