簡體   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