Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] JSON y campo ImageField

Estas en el tema de JSON y campo ImageField en el foro de Python en Foros del Web. Que tal, estoy cargando unos datos con AJAX por medio de JSON, pero tengo un problema al cargar las imágenes, me dice que tipo de ...
  #1 (permalink)  
Antiguo 07/06/2013, 17:27
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 6
JSON y campo ImageField

Que tal, estoy cargando unos datos con AJAX por medio de JSON, pero tengo un problema al cargar las imágenes, me dice que tipo de campo no es serializable, exactamente este error

Código Python:
Ver original
  1. <ResizedImageFieldFile: fotos/DSCI0021.JPG> is not JSON serializable

¿Como puedo solucionar esto?

Nota: Estoy usando una librería para hacer resize a las imágenes

Gracias
__________________
www.grupogalco.net

Twitter: @jugalvez
  #2 (permalink)  
Antiguo 07/06/2013, 17:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: JSON y campo ImageField

Es por que estas tratando de serializar la imagen completa (Para ser preciso un objeto ResizedImageFieldFile) cuando lo único que quieres serializar es la ruta hacia esa imagen.

No tengo idea de como lo estés serializando o que librería para imágenes estés usando si no te hubiera podido ayudar mas a fondo.
  #3 (permalink)  
Antiguo 07/06/2013, 20:11
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: JSON y campo ImageField

Estoy utilizando "django_resized", el cual se coloca directo en el modelo; y el proceso que hago es de esta forma

Código Python:
Ver original
  1. data = []
  2. img = Foto.objects.get(pk = foto)
  3. data.append({  'foto' : img.url })
  4. return HttpResponse(json.dumps(data), content_type="application/json; charset=uft8")


Creí que se serializaba el contenido, no el objeto :(

Gracias
__________________
www.grupogalco.net

Twitter: @jugalvez

Última edición por razpeitia; 07/06/2013 a las 20:18
  #4 (permalink)  
Antiguo 07/06/2013, 20:24
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: JSON y campo ImageField

Puedes pedirle que serialize la imagen a un string de bytes para después codificarlo, pero no lo hagas es muy pesado, lento y cargaría demasiado al servidor web por que estarías sirviendo en contenido estático de una manera muy rebuscada e ineficiente.

Supongo que esta ultima forma que pones es donde ya funciona, no?
  #5 (permalink)  
Antiguo 08/06/2013, 15:22
Avatar de _Ju
_Ju
 
Fecha de Ingreso: noviembre-2008
Ubicación: Colima, MX
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: JSON y campo ImageField

No, así era con el error; así es ya corregido:

Código Python:
Ver original
  1. img = Foto.objects.filter(pk = foto)
  2. data = serializers.serialize('json', img)
  3. return HttpResponse(data, content_type="application/json; charset=uft8")

No se cual de los dos métodos es mejor o si existe alguna otra forma; pero con esto me funcionó
__________________
www.grupogalco.net

Twitter: @jugalvez

Etiquetas: ajax, campo, file, json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:39.