Django注册后登录

时间:2018-03-02 23:09:18

标签: python django

林'尝试在注册后自动登录用户,但任何事情似乎都有效。

不起作用:

if registroForm.is_valid():
        registroForm.save()
        user = authenticate(username=registroForm.cleaned_data['username'], password=registroForm.cleaned_data['password1'])
        request.session['_auth_user_id'] = user.pk
        request.session['_auth_user_backend'] = user.backend
        return JsonResponse({})

不起作用:

if registroForm.is_valid():
        registroForm.save()
        usuario = authenticate(username=registroForm.cleaned_data['username'], password=registroForm.cleaned_data['password1'])
        login(request, usuario)
        return JsonResponse({})

我正在使用Django 2.0

1 个答案:

答案 0 :(得分:1)

我按照Django docs

的方式进行操作
def post(self,request):
    form = self.form(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password1']
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            user = User.objects.create_user(username, username, password)
        login(request, user)
        return HttpResponseRedirect(reverse(request.POST['next']))
    context = {'form' : form,
               'title': self.title,
               'myurl' : self.myurl,
               'submit': self.submit,
               'nexturl' : self.nexturl,
               }
    return render(request, self.template_name, context)

对于我的应用程序,如果验证失败,我必须在上下文中添加一些其他内容。你应该能够在那里传递表格。

修改

您不想在此处使用authenticate。由于这是注册,您需要创建新用户(create_user()),然后使用该用户的信息调用login(这是{{1}之后的代码块中间的行})。然后重定向到配置文件更新页面,您可以在其中提示用户输入要与用户一起存储的其他信息。