2014-03-02 40 views
0

登錄我看起來像一個登錄視圖:Django的基於類的視圖 - 重定向如果用戶在

class LoginView(TemplateView): 

template_name = 'login.html' 

def post(self, request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user: 
     login(request, user) 
     return redirect(reverse('index')) 
    else: 
     messages.add_message(request, messages.ERROR, 'Login failed') 
     return render(request, self.template_name, {'username' : username}) 

現在,我想修改它,如果用戶在和探訪這個alredy記錄網址,模板沒有呈現和insted他被重定向到索引頁(或任何其他登錄之一)。我試過重寫get方法,但它不起作用。什麼是適當的解決方案呢?

+0

您正在嘗試將登錄的用戶重定向到登錄頁面,是不是? –

+0

到索引頁面。 –

+0

所以請更正'模板未呈現,並且insted他被重定向到登錄頁面'部分。 –

回答

1
def post(self, request): 
    if request.user.is_authenticated(): 
     return HttpResponseRedirect("/yourIndex/") 
    else: 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username, password=password) 
     if user: 
      login(request, user) 
      return redirect(reverse('index')) 
     else: 
      messages.add_message(request, messages.ERROR, 'Login failed') 
      return render(request, self.template_name, {'username' : username})