subir imagenes example python django

python - imagenes - imagefield django example



¿Por qué no puedo subir archivos jpg a mi aplicación Django a través de admin/? (9)

Estoy tratando de agregar imágenes a mis modelos en mi aplicación Django.

modelos.py

class ImageMain(models.Model): product = models.ForeignKey(Product) photo = models.ImageField(upload_to=''products'')

En el modo de desarrollo, cada vez que intento cargar la imagen a través del administrador de Django, sigo recibiendo:

Sube una imagen válida. El archivo que cargó no era una imagen o una imagen dañada.

Instalé libjpeg a través de fink y luego instalé PIL 1.1.6 en el buey X 10.5.7

from PIL import Image file = open(''/Users/Bryan/work/review_app/media/lcdtvs/samsung_UN46B6000_front.jpg'', ''r'') trial_image = Image.open(file) trial_image.verify()

Parece que el jpg es válido basado en esa sesión. Sin embargo, no se carga. He probado otros jpgs, tampoco funcionan.

¿Qué podría estar yendo mal?

Pude subir con éxito un archivo png.



''python -v'' luego ''importar _imagen'' es útil para averiguar de dónde se carga _imaging.so. Si reinstala PIL sin limpiar el directorio de PIL en los paquetes de sitio, es posible que aún esté ejecutando un antiguo _imaging.so bajo el directorio del paquete Python. Se aprobará selftest.py de PIL, porque tienes una nueva _imaging.so en tu directorio de compilación. Y asegúrese de editar JPEG_ROOT en setup.py para seleccionar el encabezado y los directorios .so correctos en el momento de la compilación.


Django está intentando importar PIL desde una carpeta llamada PIL , pero PIL se instala a sí mismo en una carpeta llamada, por ejemplo, PIL-1.1.7-py2.6-macosx-10.6-universal.egg , por lo que la importación falla. ) parecen interpretar como imagen corrupta.

Un enlace simbólico simple

host:~ user$ cd /Library/Python/2.6/site-packages host:site-packages user$ ln -vis PIL-1.1.7-py2.6-macosx-10.6-universal.egg PIL create symbolic link `PIL'' to `PIL-1.1.7-py2.6-macosx-10.6-universal.egg''

ha arreglado esto para mí en un Mac OSX 10.6.x MBP. En las máquinas Linux, la carpeta podría llamarse dist-packages y estar debajo de /usr/lib/python/ o así, pero la idea es la misma.

A menudo, puede encontrar la carpeta donde normalmente se instalan los módulos de Python como se describe here .


Encontré el mismo problema en el servidor Ubuntu, luego puede solucionarlo instalando libjpeg-dev antes de PIL.

sudo apt-get install libjpeg-dev sudo pip install PIL --upgrade

y si ya instaló libjpeg-dev después de PIL. luego puede eliminar PIL primero e intentar reinstalar PIL de la siguiente manera.

sudo pip uninstall PIL sudo apt-get install libjpeg-dev sudo pip install PIL

Funciona para mí, y espero que funcione para ti.


Tenga en cuenta que this publicación es útil para cualquier persona que obtenga este error con un virtualenv en Ubuntu.

Básicamente, Ubuntu instala objetos compartidos en ubicaciones que pip no conoce. En este caso, pip espera que las bibliotecas del sistema estén en / usr / lib, pero Ubuntu las coloca en / usr / lib / x86_64-linux-gnu, o en alguna otra ubicación dependiente de la arquitectura.

La solución a corto plazo es simplemente vincular las bibliotecas en / usr / lib:

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/ sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/

Esto solucionó el error para mí en Ubuntu 12.04.


Tuve este problema, aunque en Linux no en Mac, por lo que podría no dar información demasiado específica. Sin embargo, es posible que también necesite libjpeg-devel (si hay un corresponsal para Mac).

También asegúrese de purgar su instalación PIL actual completamente del sistema. Y una vez que esté seguro de que libjpeg está instalado correctamente, vuelva a instalar PIL con build_ext -i. A continuación, ejecute el archivo selftest.py de PIL para verificar si produce el error JPEG.




solo haz
sudo easy_install PIL

Esto instalará PIL específico para su sistema operativo. asegúrese de que el archivo de huevo generado en /usr/local/lib/python2.6/dist-packages/ tenga información de huevo (porque cuando hice lo mismo, el archivo de huevo no era correcto). Si no, simplemente cambie el nombre de PIL-build-specific-name a PIL y agregue un archivo PIL.pth en la carpeta dist-packages. escriba PIL en el archivo PIL.pth y habrá terminado