2010-08-03 21 views
5

estoy haciendo un sitio web donde se suben archivos a través del administrador y esto luego almacenarlos en Amazon S3. Estoy usando django-storages y boto para esto, y parece estar funcionando bien.En Django, ¿cómo hacer para que django-storages, boto y easy_thumbnail funcionen bien?

La cosa es que, estoy acostumbrado a usar mis easy_thumbnails (el nuevo sorl.thumbnail) en el lado de la plantilla para crear miniaturas sobre la marcha. Prefiero este enfoque, en lugar del modelo, ya que permite un mantenimiento más fácil si alguna vez decido cambiar el tamaño de la miniatura en una fecha posterior, etc.

Pero me estoy dando cuenta de que a easy_thumbnails no parece gustarle la lectura la imagen ahora está almacenada en Amazon S3. Además, me di cuenta, ¿dónde estaría poniendo exactamente las miniaturas una vez hechas? Obviamente, preferiría que estos también estén en Amazon S3. Pero, ¿cómo consigo que estas dos tecnologías jueguen bien?

¿Cómo obtendría easy_thumbnails para almacenar el pulgar que crea en Amazon S3? ¿O simplemente estoy viendo todo mal?

Gracias!

Respuesta

16

easy_thumbnails hará miniaturas de imágenes basadas en S3 para usted; solo tiene que configurar settings.THUMBNAIL_DEFAULT_STORAGE, para que easy_thumbnails sepa qué almacenamiento usar (en su caso, es probable que desee configurarlo en el mismo almacenamiento que está utilizando para tus campos de imagen).

+0

Gracias por esto, me has ahorrado mucho tiempo – ajt

+1

Por el amor de todo lo que es bueno y puro, ¿por qué no es esta la respuesta aceptada? ¡Gracias! –

-1

he cambiado la forma en que lo uso ...

I modificado mi modelo para tener un campo para la miniatura:

class Photo(models.Model) 
    image = models.ImageField(upload_to=image_upload_to) 
    thumb_a = ThumbnailerImageField(upload_to=thumb_a_upload_to, resize_source=dict(size=(98,98), crop='center'),) 

y en la plantilla, en lugar de:

{% load thumbnail %} 
<img src="{% thumbnail photo.image 98x98 crop='center' %}"> 

Lo cambié a ...

Cuando subo la foto ahora que hago ...

for i in listOfImages: 
    form = CreatePhotoForm(request.POST, i) 
     if form.is_valid(): 
      asdf = form.save(commit=False) 
      asdf.owner = request.user 
      asdf.image = i 
      asdf.thumb_a = i 
      asdf.title = str(i) 
      asdf.save() 

Funciona bastante bien.

+1

Te perdiste por qué no funcionaba como debería. –

Cuestiones relacionadas