Django, sorl-thumbnail e AWS (S3, EC2)


No final do ano passado trabalhei em um projeto usando o framework Django. Uma das funcionalidades do projeto permitia que anunciantes incluíssem informações dos produtos, como descrição e imagem.

Durante a renderização do template de visualização do produto as miniaturas das imagens do produto não estavam sendo geradas.

Depois testar algumas possibilidades resolvi fazer essa lista com algumas possíveis causas. Se você também está enfrentando dificuldades para a exibição de miniaturas usando o sorl-thumbnail, pode seguir os passos abaixo:

1 - Se você estiver usando o S3. Verifique suas configurações.

O exemplo abaixo está usando o app django-storage-redux.

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

AWS_ACCESS_KEY_ID = '####################'
AWS_SECRET_ACCESS_KEY = '################################'
AWS_STORAGE_BUCKET_NAME = 'bucketname'
AWS_AUTO_CREATE_BUCKET = False
AWS_QUERYSTRING_AUTH = False

MEDIA_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
STATIC_URL = MEDIA_URL

2 - Tente gerar uma miniatura manualmente.

python manage.py shell
from sorl.thumbnail import get_thumbnail
from products.models import Product

product = Product.objects.get(id=1)
image = get_thumbnail(product.image, '250x150', crop='center', quality=75)

Verifique se dentro diretório media uma pasta cache foi criada contendo a miniatura da imagem.

3 - Verifique as dependências.

Se sua instância EC2 está usando uma distribuição como o Ubuntu você pode instalar facilmente usando o gerenciador apt.

sudo apt-get install libgraphicsmagick++-dev
pip uninstall pillow
pip install --no-cache-dir -I pillow

Comentários, dúvidas, sugestões use o formulário abaixo. Espero ter ajudado. Um abraço!

Related Posts