Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2011, 21:41
Avatar de dual3nigma
dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 122
Guardando imágenes en Amazon S3 con Django

Que tal compañeros mios!!!

Este post no es para hablarles de las ventajas del tener alojados archivos estáticos en Amazon S3, ojalá ya sepas eso ;)

Frameworks modernos como Django hacen esta tarea súper facilísima con librerías como http://django-storages.readthedocs.o...est/index.html

No como en ciertos viejos CMS (si Wordpress Total Cache, tuuuu).

Lo que más amo de Django Storages es la simplicidad, puedes cambiar entre S3 y local fácilmente. Aquí les pongo un proyecto de ejemplo para que vean lo sencillo que es https://github.com/dual3nigma/HTML5-...aster/djangos3

Lo primero claro es instalar django-storages en el link de arriba pueden encontrar las instrucciones (sencillisimo con pip)

En el código notaran que hay que agregar estos parámetros de configuración

Código Python:
Ver original
  1. # Configuracion de Storage en Amazon S3
  2. DEFAULT_FILE_STORAGE = 'storages.backends.s3.S3Storage'
  3. AWS_ACCESS_KEY_ID = 'XXXXXX'
  4. AWS_SECRET_ACCESS_KEY = 'XXXXXX'
  5. AWS_STORAGE_BUCKET_NAME = 'djangos3'


La primer "constante" le indica a django que se olvide de guardar los archivos y que designe esta tarea a la librería que recién instalamos, aquí hago un paréntesis para mencionar que django-storages te permite almacenar archivos en muchos mas medios como por ejemplo en otro servidor por ftp, etc.
Lo segundo y tercero son las credenciales de Amazon S3. Y por ultimo el Bucket en que se almacenara. Hasta aquí la configuración.

Lo maravilloso es que es lo único extra que tienes que hacer. Tu modelo puede ser así

Código Python:
Ver original
  1. class Usuario(models.Model):
  2.     nombre = models.CharField(max_length=100)
  3.     foto = models.ImageField(upload_to='imagenes/usuarios')

y tus imágenes empezaran a subirse a Amazon S3, con los permisos correctos, si no existe la carpeta se creara!!! Es genial ;)


Pruebenlo y me cuentan!

Saludos!