Django寄存器

Django寄存器,django,django-views,Django,Django Views,我试图在Django中获得一个用户注册,然后将他重定向到他的主页,即“dashboard”。虽然它得到了注册,但由于提供了身份验证(@login\u required),用户没有重定向到其主页。用户必须再次提交用户名和密码才能登录页面 这是我的视图。py def register(request): form = RegisterForm(request.POST or None) if(form.is_valid()): user = form.save()

我试图在Django中获得一个用户注册,然后将他重定向到他的主页,即“dashboard”。虽然它得到了注册,但由于提供了身份验证(
@login\u required
),用户没有重定向到其主页。用户必须再次提交用户名和密码才能登录页面

这是我的视图。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")

您需要先使用
authenticate()
,然后再调用
login()

发件人:

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


好的,谢谢。看起来合乎逻辑,但我得到的是“匿名用户”对象没有属性“后端”错误。有什么建议吗?我尝试了
登录(self.request,newuser)
。但是这不起作用。@user1162512在调用
authenticate
后,你能告诉我
new\u user
变量中有什么吗?用户正在注册,但仍然没有。知道为什么吗?主数据库和从数据库是不同的吗?如果是,则
form.save()
在表中插入新用户。在下一行中,当我们尝试获取新用户时(这次是从从属数据库)。这两者之间可能存在一点复制延迟,这就是造成这种情况的原因。
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/')