2015-10-09 56 views
1

我有一個自定義用戶模型(MyUser)和一個註冊表單(UserCreationForm)。註冊用戶後,我希望它重定向到主頁。但是,它重定向到主頁,但問題是即使在註冊視圖中使用login()函數後,user也未登錄,因此它將被重定向回登錄頁面。成功註冊後以登錄用戶身份重定向到家庭

views.py:

@login_required(login_url='/account/login/') 
def home(request): 
    return render(request, 'home.html') 

def login_view(request): 
    form = LoginForm(request.POST or None) 
    if request.POST and form.is_valid(): 
     user = form.login(request) 
     if user: 
      login(request, user) 
      return redirect("/")# Redirect to a success page. 
    return render(request, 'login.html', {'form': form }) 

def register(request): 
    if request.method == "POST": 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      user = form.save() 
      login(request, user) 
      return redirect("/") 
    else: 
     form = UserCreationForm() 
    return render(request, 'register.html', { 
     'form': form 
    }) 

它給我的錯誤:

AttributeError at /account/register/ 
'MyUser' object has no attribute 'backend' 

我在做什麼錯在這裏?請幫我解決這個問題。謝謝。

回答

2

也許,這可以解決你的問題。
這將驗證並註冊後登錄用戶。

def register(request): 
    if request.method == "POST": 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      user = form.save() 
      password = self.request.POST.get('password', None) 
      authenticated = authenticate(
       username=user.username, 
       password=password 
      ) 
      if authenticated: 
       login(request, authenticated) 
       return redirect("/") 
    else: 
     form = UserCreationForm() 
    return render(request, 'register.html', { 
     'form': form 
    }) 
+0

完美!謝謝。你能不能幫我理解爲什麼我必須重新登錄,而不僅僅是登錄(請求,用戶)'? –

+0

看到這個,也許這個澄清你的問題,https://docs.djangoproject.com/en/1.8/topics/auth/default/#authenticating-users –

+0

太棒了!非常感謝。 –

相關問題