2014-04-02 24 views
1

我有django登錄視圖/功能,直到現在才正常工作,但突然間,當我嘗試使用用戶名和密碼登錄管理員帳戶時(它沒有任何工作錯誤之前),它告訴我下面的錯誤異常值:在django登錄過程中解壓縮的值太多

ValueError at /login/ 
too many values to unpack 
Request Method: POST 
Request URL: http://127.0.0.1:8006/login/ 
Django Version: 1.3.1 
Exception Type: ValueError 
Exception Value: too many values to unpack 
Exception Location: /home/rick/.virtualenvs/project/local/lib/python2.7/site-packages/django/contrib/auth/models.py in check_password, line 42 
Python Executable: /home/rick/.virtualenvs/project/bin/python 
Python Version: 2.7.4 
Python Path:[....] 

我的看法是類似下面

def blogin(request, *args, **kwargs): 
    if request.method == 'POST': 
     form = EmailLoginForm(data=request.POST) 
     if form.is_valid(): ... 
      ult = UserLoginTrail(\ 
       user = User.objects.get(username=request.POST['username']), 
       login_time = datetime.datetime.now(), 
       ) 
      ult.save() 
     ....... 
     ....... 

所以我試圖改變從外殼的密碼,並通過使用管理命令,Django提供像低於

管理命令

python manage.py changepassword [email protected] 

殼牌

from django.contrib.auth.models import User 
user = user.objects.get(username='[email protected]') 
user.set_password('password') 
user.save() 

但是還是我得到試圖用我的用戶名[email protected]登錄時同樣的錯誤?

那麼如何避免這個too many values to unpack錯誤,以及它爲什麼會突然發生?

回答

0

這個異常意味着你試圖解開一個元組,但是這個元組的值相對於目標變量的數量來說太多了。

所以你的錯誤是在模型中的功能check_password。檢查你的參數,你的投入,你的回報。例如,這將引發錯誤非常呈三角與你並能指導你解決你的問題:

def returnATupleWithThreeValues(): 
    return (1,2,3) 
a,b = returnATupleWithThreeValues() 
print a 
print b 

編輯:如果不幫你,請提供您的check_password功能,你在哪裏調用它的地方

+0

'check_password'是默認的django方法嗎?我沒有定製它。 –

+0

哦,真的,對不起。我以爲你建立了自己的認證。如果您使用username = form.cleaned_data ['username'],而不是username = request.POST ['username'],您會得到同樣的錯誤嗎? –

相關問題