这是一个例子,根据我目前的理解,它应该起作用。下面的代码直接从./manage.py shell
auth数据库中有一个注册用户:
from django.contrib.auth.models import User
user_in_database = User.objects.all()[0]
print user_in_database.username #username
print user_in_database.password #pass
认证测试:
from django.contrib.auth import authenticate
authenticated_user = authenticate(username = user_in_database.username,
password = user_in_database.password)
type(authenticated_user) #NoneType
它返回None,我原以为它会从数据库返回用户。我错过了一些关键的东西吗?
答案 0 :(得分:3)
您遗失的是user_in_database.password
不是用户的密码。相反,它是实际密码的哈希值(只需打印它来检查自己)。
基本上,当您拨打authenticate
时,您没有使用正确的密码。
因此,authentication fails, and returns None
(因为这是传递错误凭据时django返回的内容)。