Django Authenticate返回None

Django Authenticate返回None,django,authentication,nonetype,Django,Authentication,Nonetype,我有以下代码片段: user = User(username='h@h.com',email='h@h.com') user.set_password('pass') user.save() u = authenticate(username='h@h.com', password='pass') #this always returns None!!! 问题是,你总是一无所有。我在其他堆栈溢出文章中跟踪了代码示例,并将其缩小到上面几行 关于可能发生的事情有什么想法吗?为什么不创建这样一个用户

我有以下代码片段:

user = User(username='h@h.com',email='h@h.com')
user.set_password('pass')
user.save()
u = authenticate(username='h@h.com', password='pass') #this always returns None!!!
问题是,你总是一无所有。我在其他堆栈溢出文章中跟踪了代码示例,并将其缩小到上面几行


关于可能发生的事情有什么想法吗?

为什么不创建这样一个用户:

user = User.objects.create_user( username="whatever", email="whatever@some.com", password="password")
user = authenticate( username="whatever",password="password")

有趣的是,check_password在以下情况下返回True:

eml = "4@a.com"
pw = "pass"
uname = 'w2'
user = User.objects.create_user(uname,eml,pw)
user.save()
log.debug("Password check passes?")
log.debug(user.check_password(pw)) # Logs True!!!
user = authenticate(username=uname, password=pw)

在您的设置中放置类似的内容

#Authentication backends
AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
    )
或者如果您正在使用userena作为您的帐户

#Authentication backends
AUTHENTICATION_BACKENDS = (
    'userena.backends.UserenaAuthenticationBackend',
    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)
在settings.py中,添加

AUTH_USER_MODEL = your custom user class
e、 g如果django应用程序名称为office,自定义用户类为Account,则

AUTH_USER_MODEL = 'office.Account'

还要检查您是否有正确的用户名/密码组合。有时,从createsuperuser命令创建的用户名与通常使用的用户名不同

set\u password
是一种误导性的方法,它不会将密码保存在用户表上。您需要调用
user.save()
,以便它在您的流中工作

您有一些自定义设置吗?谢谢,这是我的原始代码。我把它改回去了,但仍然没有荣耀。让我把密码贴在下面的答案上…-1。这是错误的。通过这种方式,密码将不被保存,并且在与哈希版本进行检查时将不匹配。Daniel,我对此进行了测试,它正在哈希密码。我永远也不知道这是否是一个不同的密码,但它肯定是散列的。我的问题是缺少身份验证后端设置