210👍
That exception means that you are trying to unpack a tuple, but the tuple has too many values with respect to the number of target variables. For example: this work, and prints 1, then 2, then 3
def returnATupleWithThreeValues():
return (1,2,3)
a,b,c = returnATupleWithThreeValues()
print a
print b
print c
But this raises your error
def returnATupleWithThreeValues():
return (1,2,3)
a,b = returnATupleWithThreeValues()
print a
print b
raises
Traceback (most recent call last):
File "c.py", line 3, in ?
a,b = returnATupleWithThreeValues()
ValueError: too many values to unpack
Now, the reason why this happens in your case, I don’t know, but maybe this answer will point you in the right direction.
22👍
try unpacking in one variable,
python will handle it as a list,
then unpack from the list
def returnATupleWithThreeValues():
return (1,2,3)
a = returnATupleWithThreeValues() # a is a list (1,2,3)
print a[0] # list[0] = 1
print a[1] # list[1] = 2
print a[2] # list[2] = 3
- [Django]-How to put comments in Django templates?
- [Django]-Is there a way to loop over two lists simultaneously in django?
- [Django]-How to rename items in values() in Django?
8👍
This problem looked familiar so I thought I’d see if I could replicate from the limited amount of information.
A quick search turned up an entry in James Bennett’s blog here which mentions that when working with the UserProfile to extend the User model a common mistake in settings.py can cause Django to throw this error.
To quote the blog entry:
The value of the setting is not "appname.models.modelname", it’s just "appname.modelname". The reason is that Django is not using this to do a direct import; instead, it’s using an internal model-loading function which only wants the name of the app and the name of the model. Trying to do things like "appname.models.modelname" or "projectname.appname.models.modelname" in the AUTH_PROFILE_MODULE setting will cause Django to blow up with the dreaded "too many values to unpack" error, so make sure you’ve put "appname.modelname", and nothing else, in the value of AUTH_PROFILE_MODULE.
If the OP had copied more of the traceback I would expect to see something like the one below which I was able to duplicate by adding "models" to my AUTH_PROFILE_MODULE setting.
TemplateSyntaxError at /
Caught an exception while rendering: too many values to unpack
Original Traceback (most recent call last):
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 71, in render_node
result = node.render(context)
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 87, in render
output = force_unicode(self.filter_expression.resolve(context))
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 535, in resolve
obj = self.var.resolve(context)
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 676, in resolve
value = self._resolve_lookup(context)
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 711, in _resolve_lookup
current = current()
File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/contrib/auth/models.py", line 291, in get_profile
app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
ValueError: too many values to unpack
This I think is one of the few cases where Django still has a bit of import magic that tends to cause confusion when a small error doesn’t throw the expected exception.
You can see at the end of the traceback that I posted how using anything other than the form "appname.modelname" for the AUTH_PROFILE_MODULE would cause the line "app_label, model_name = settings.AUTH_PROFILE_MODULE.split(‘.’)" to throw the "too many values to unpack" error.
I’m 99% sure that this was the original problem encountered here.
- [Django]-How to override and extend basic Django admin templates?
- [Django]-Reload django object from database
- [Django]-Disabled field is not passed through – workaround needed
0👍
Most likely there is an error somewhere in the get_profile() call. In your view, before you return the request object, put this line:
request.user.get_profile()
It should raise the error, and give you a more detailed traceback, which you can then use to further debug.
- [Django]-How can I avoid "Using selector: EpollSelector" log message in Django?
- [Django]-What is the SQL ''LIKE" equivalent on Django ORM queries?
- [Django]-Altering one query parameter in a url (Django)
0👍
This happens to me when I’m using Jinja2 for templates. The problem can be solved by running the development server using the runserver_plus
command from django_extensions.
It uses the werkzeug debugger which also happens to be a lot better and has a very nice interactive debugging console. It does some ajax magic to launch a python shell at any frame (in the call stack) so you can debug.
- [Django]-PyCharm: DJANGO_SETTINGS_MODULE is undefined
- [Django]-How to get superuser details in Django?
- [Django]-How to print BASE_DIR from settings.py from django app in terminal?
0👍
Forgetting enumerate in attempt to access index
in a loop
Throws ValueError: too many values to unpack (expected 2)
:
for index, value in your_list:
assert value is your_list[index] # this line not reached
No Exception thrown:
for index, value enumerate(in your_list):
assert value is your_list[index]
- [Django]-Django templates: verbose version of a choice
- [Django]-Disable a method in a ViewSet, django-rest-framework
- [Django]-How to serve media files on Django production environment?