Python 使用身份验证的用户匹配查询不存在

Python 使用身份验证的用户匹配查询不存在,python,django,authentication,django-authentication,Python,Django,Authentication,Django Authentication,我已使用以下代码创建了一个用户: views.py(注册视图可以正常工作,但登录视图不能) 注册视图创建自定义用户没有任何问题,但是当我想使用它登录到我的应用程序时,登录视图抛出一个user.DoesNotExist异常。为什么会这样?问题在于: u = User.objects.get(email=email, password=password) 它没有意义,您无法比较密码字段值,因为它未原始存储在数据库中 要检查用户是否提供了正确的密码,应使用authenticate内置功能: u =

我已使用以下代码创建了一个用户:

views.py(注册视图可以正常工作,但登录视图不能)

注册视图创建自定义用户没有任何问题,但是当我想使用它登录到我的应用程序时,登录视图抛出一个
user.DoesNotExist
异常。为什么会这样?

问题在于:

u = User.objects.get(email=email, password=password)
它没有意义,您无法比较
密码
字段值,因为它未原始存储在数据库中

要检查用户是否提供了正确的密码,应使用
authenticate
内置功能:

u = authenticate(username=username, password=password)
你可以在这里看到一个很好的例子:

..或在Django官方文档中(
login
函数示例):

您是否已签入调试器或打印程序,您在
电子邮件
密码
变量中得到了什么?您好,Igor,我按照您所说的更改了代码,并添加了一个HttpResponse以创建断点,问题已部分解决,不再引发DoesNotExist异常,但是我的应用程序还不能识别我创建的用户,在登录表单中引入了电子邮件和密码,你自己或其他人能再次帮助我吗?无论如何,谢谢:)您应该分两步完成:首先通过电子邮件找到用户,然后使用该用户的用户名与您在上一步中找到的用户以及用户在表单中提供的密码一起调用
验证
函数。
u = authenticate(username=username, password=password)