2012-08-29 85 views
0

我正在django中創建登錄表單。當我運行應用程序並填寫用戶名和密碼字段時。該頁面始終重定向到一個條件(用戶名是否正確)。登錄表格問題

的代碼是:

def home(request): 

    if request.method == 'POST': 
     username = request.POST.get('user_name') 
     password = request.POST.get('password') 
     user = authenticate(user_name=username, password=password) 
     if user is not None: 
     if user.is_active: 
      login(request, user) 
     # success 
      return render_to_response('registration/main_page.html',{'form':login},context_instance=RequestContext(request)) 
     else: 
     #user was not active 
      return render_to_response('registration/q.html') 
     else: 
     # not a valid user 
      return render_to_response('registration/home.html') 

    else: 
     # URL was accessed directly 
      return render_to_response('registration/w.html') 

它總是重定向到home.html的

else: 
      #user was not active 
       return render_to_response('registration/home.html') 

爲什麼會發生?

+0

您需要評估IS_ACTIVE對於初學者來說,這不是一個模板,所以它應該是,user.is_active() –

+0

你的代碼示例混在一起。評論說#user沒有激活,但是你正在重定向到主頁。查看頂部代碼,當用戶無效時,重定向到主頁。哪種情況是正確的? – Mikael

+0

我猜這裏傳遞的用戶是不活動的 – Rakesh

回答

2

authenticate()功能需要usernameuser_name

試試這個:user = authenticate(username=username, password=password)

另外,代替if user is not None:你可以寫if user :

+0

如果這不是一個錯字,那確實存在你的問題 –

0

看來你在這裏函數返回一個無對象:

if user is not None 

您可以添加打印語句針下來,

if request.method == 'POST': 
     username = request.POST.get('user_name') 
     password = request.POST.get('password') 

     print username # what does it return? 

     user = authenticate(user_name=username, password=password) 

     print user # what does it return? 

     if user is not None: 
      #...