Excepción "Demasiados valores para descomprimir"
Estoy trabajando en un proyecto en Django y acabo de empezar a intentar ampliar el modelo de usuario para crear perfiles de usuario.
Desafortunadamente, me encontré con un problema: cada vez que intento obtener el perfil del usuario dentro de una plantilla ( user.get_template.lastIP
, por ejemplo), aparece el siguiente error:
Ambiente: Método de solicitud: OBTENER URL de solicitud: http://localhost:8000/ Versión de Django: 1.1 Versión de Python: 2.6.1 Error de plantilla: En la plantilla /path/to/base.tpl, error en la línea 19 Se detectó una excepción al renderizar: demasiados valores para descomprimir 19: Hola, {{user.username}} ({{ user.get_profile.rep}}). ¿Qué tal? Cerrar sesión Tipo de excepción: TemplateSyntaxError en / Valor de excepción: se detectó una excepción al renderizar: demasiados valores para descomprimir
¿Alguna idea sobre lo que está pasando o qué estoy haciendo mal?
Esa excepción significa que estás intentando descomprimir una tupla, pero la tupla tiene demasiados valores con respecto al número de variables de destino. Por ejemplo: este trabajo, e imprime 1, luego 2, luego 3
def returnATupleWithThreeValues():
return (1,2,3)
a,b,c = returnATupleWithThreeValues()
print a
print b
print c
Pero esto plantea tu error.
def returnATupleWithThreeValues():
return (1,2,3)
a,b = returnATupleWithThreeValues()
print a
print b
eleva
Traceback (most recent call last):
File "c.py", line 3, in ?
a,b = returnATupleWithThreeValues()
ValueError: too many values to unpack
Ahora, la razón por la que esto sucede en tu caso, no lo sé, pero tal vez esta respuesta te indique la dirección correcta.
intente desempaquetar en una variable,
Python lo manejará como una lista,
luego descomprimir de la lista
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