Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ValueError: Too many values to unpack Django

Tags:

So I just got my first django app deployed.

I did a syncdb and created my superuser account for the site.

Now when I access the page and press the login button I get this error. I think it has something to do with the password but I'm not sure.

ValueError at /accounts/login/ too many values to unpack 

I'm using the generic login view

(r'^accounts/login/$', login, {'template_name': 'authentication/login.html'}), 

The following is the traceback

Environment:   Request Method: POST Request URL: http://xx.xx.xx.xx:8888/accounts/login/?next=/some_page/  Django Version: 1.3.1 Python Version: 2.7.2 Installed Applications: ['django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.sites',  'django.contrib.messages',  'django.contrib.staticfiles',  'django.contrib.admin',  'bc_system_app',  'django.contrib.humanize'] Installed Middleware: ('django.middleware.common.CommonMiddleware',  'django.contrib.sessions.middleware.SessionMiddleware',  'django.middleware.csrf.CsrfViewMiddleware',  'django.middleware.csrf.CsrfResponseMiddleware',  'django.contrib.auth.middleware.AuthenticationMiddleware',  'django.contrib.messages.middleware.MessageMiddleware')   Traceback: File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response   111.                         response = callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view   93.                     response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func   79.         response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/views.py" in login   35.         if form.is_valid(): File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in is_valid   121.         return self.is_bound and not bool(self.errors) File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _get_errors   112.             self.full_clean() File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in full_clean   268.         self._clean_form() File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py" in _clean_form   296.             self.cleaned_data = self.clean() File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/forms.py" in clean   85.             self.user_cache = authenticate(username=username, password=password) File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py" in authenticate   55.             user = backend.authenticate(**credentials) File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/backends.py" in authenticate   18.             if user.check_password(password): File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py" in check_password   275.         return check_password(raw_password, self.password) File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py" in check_password   42.     algo, salt, hsh = enc_password.split('$')  Exception Type: ValueError at /accounts/login/ Exception Value: too many values to unpack 
like image 742
bash- Avatar asked Jan 21 '12 15:01

bash-


People also ask

How do I fix ValueError too many values to unpack expected 3?

The Python "ValueError: too many values to unpack (expected 3) in Python" occurs when the number of variables in the assignment is not the same as the number of values in the iterable. To solve the error, declare exactly as many variables as there are items in the iterable.

What does too many values to unpack mean?

The valueerror: too many values to unpack occurs during a multiple-assignment where you either don't have enough objects to assign to the variables or you have more objects to assign than variables.

How do you fix not enough values to unpack expected 2 got 1?

Verify the assignment variables. If the number of assignment variables is greater than the total number of variables, delete the excess variable from the assignment operator. The number of objects returned, as well as the number of variables available are the same. This will resolve the value error.


1 Answers

Just had the same problem.

It seem that in my case, the site was running with Django 1.4 when the password was created (due to a PYTHONPATH mix-up).

When I tried to login running the site with 1.3.1 I got this error. Then I noticed the Django version, switched to 1.4 and the login started working again.

It seems the password algorithm was changed in 1.4:

https://docs.djangoproject.com/en/dev/releases/1.4-beta-1/#improved-password-hashing

And if you were using Django 1.4 alpha it might also be that the password was effectively corrupted (read the warning).

like image 147
h3. Avatar answered Oct 12 '22 18:10

h3.