Django注册

时间:2013-07-30 12:41:54

标签: django django-views

我正在尝试在Django中获得用户注册,然后将其重定向到他的主页,即“仪表板”。虽然,它会被注册,但由于提供的身份验证(@login_required),用户不会被重定向到他的主页。用户必须再次提交用户名和密码才能登录页面。

这是我的 views.py

def register(request):
    form = RegisterForm(request.POST or None)

    if(form.is_valid()):
        user = form.save()
        login(request,user)
        return redirect('/dashboard/')

    ctx = {
            'form' : form
    }

    return render_to_response('home/register.html',ctx, context_instance = RequestContext(request))


@login_required
def dashboard(request):
    HttpResponse("HELLO")

1 个答案:

答案 0 :(得分:2)

在致电authenticate()之前,您需要先使用login()

from django.contrib.auth import authenticate, login
if(form.is_valid()):
    form.save()
    new_user = authenticate(username=form.cleaned_data.get('username'), 
                            password= form.cleaned_data.get('password'))
    login(request,new_user)
    return redirect('/dashboard/')

来自Django docs

  

当您手动登录用户时,必须在调用login()之前调用authenticate()。 authenticate()在用户上设置一个属性,注意哪个身份验证后端成功验证了该用户(有关详细信息,请参阅后端文档),稍后在登录过程中需要此信息。如果您尝试直接登录从数据库检索的用户对象,则会引发错误。