为什么创建后不能立即访问我的Django用户?

时间:2013-05-28 06:11:16

标签: django django-forms

我使用以下代码创建新用户:

    form = UserCreationForm(request.POST)
    if form.is_valid():
        username = form.clean_username()
        password = form.clean_password2()           
        new_user = form.save()  

以上工作正常。接下来我希望登录用户并重定向到主页,如下所示

        user = authenticate(username=username, password=password)
        auth.login(request, user)
        return HttpResponseRedirect("/dashboard/home")

我收到以下错误消息:

'AnonymousUser' object has no attribute 'backend'

一点点调试显示“用户”为“无”。但是,如果我尝试登录刚刚创建的用户,它就可以工作,即用户已创建,但

user = authenticate(username=username, password=password)

不是在我的注册函数中返回用户(完全相同的代码随后在我的登录功能中工作)。追溯具有以下内容:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
                        response = callback(request, *callback_args, **callback_kwargs)

它提供了一个小线索。是否发生了某种回调

user = authenticate(username=username, password=password)
注册期间

实际上是在创建用户之前调用的吗?如何在注册后立即对用户进行身份验证和重定向?

1 个答案:

答案 0 :(得分:0)

Django文档有一个部分,看起来你做的是同样的事情:

https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
    else:
        # Return an 'invalid login' error message.

我的猜测是用户名/密码错误或用户处于非活动状态(user.is_active = False

另外,尝试在调用auth.login

之前手动设置后端attr
user.backend = 'django.contrib.auth.backends.ModelBackend'