Django 1.5最有趣的功能可能是custom user
最终告别了过时的用户名。
文档中有一个非常好的out-of-the-box example用于创建用户,您只需要使用电子邮件地址而不是用户名。
然而,有一点需要注意。在成功注册后出于某种原因,我无法自动登录用户,因为它会像here中的Django 1.4中所描述的那样工作换句话说,这对我不起作用:
user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password2'])
login(request, user)
奇怪的是,我甚至没有在调试控制台中收到任何错误消息,也没有任何警告。
根据out-of-the-box example,虽然没有定义自定义后端。只有CustomUser和CustomUsermanager。因此我不明白为什么我不能手动登录用户。
btw我还在设置中设置了以下内容:
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
这里有任何Django 1.5专家吗?
答案 0 :(得分:1)
我只是自己运行了这个例子,它确实有效。
在运行 syncdb 之前,您是否设置了 AUTH_USER_MODEL ?
如果没有,请擦除您的数据库并再次运行该命令。根据链接的示例,如果一切配置正确,它应该在创建超级用户时询问您的出生日期。
顺便说一下, ModelBackend 是默认的 AUTHENTICATION_BACKENDS ,你不必设置它。
答案 1 :(得分:0)
我终于找到了解决方案。在内部django类中调试之后。解决方案简直令人尴尬。
user = authenticate(username=form.cleaned_data['email'], password=form.cleaned_data['password2'])
login(request, user)
我的错误是login(request, user)
确保您正在使用
from django.contrib.auth import login
而不是错误的:
from django.contrib.auth.views import login
我的设置中其他一切都是正确的。