繁体   English   中英

如何在django类基本视图中注册后自动登录

[英]how to login automatically after signup in django class base view

我想在成功注册后自动登录用户。

但我的代码现在返回匿名用户

所以,我在 django CBV 中使用 CreateView

视图.py

class SignUpView(CreateView):
  template_name = 'users/signup.html'
  success_url = reverse_lazy('users:email_confirm_notice')
  form_class = CustomUserCreationForm

  def form_valid(self, form):
    user = form.save()
    login(self.request, user)
    return super().form_valid(form)

我试试

def form_valid(self, form):
  form.save()
  new_user = authenticate(username=form.cleaned_data.get('username'), password.cleaned_data.get('password1'))
  login(self.request, new_user)
  return super().form_valid(form)

success_url 是 TemplateView,它只是显示模板和 customusercreationform 更改错误消息。

预计第一个功能不会有任何变化。

我的问题是什么?

我解决了...

但我不明白为什么它会这样工作。

我只是更改如下代码。

注册视图/form_valid()

def form_valid(self, form):
    valid = super().form_valid(form)
    login(self.request, self.object)
    return valid

演戏了。。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM