Skip to content

3. Thumblailing

Dmitry edited this page Dec 7, 2018 · 2 revisions

Image

pip install sorl-thumbnail
pip install Pillow

Model

image = ImageField(upload_to='pizza_img')

Setting

MEDIA_ROOT = os.path.join(BASE_DIR, "media")

MEDIA_URL = '/media/'	

Model

@property
def thumb(self):
    try:
        return mark_safe('<img src="/media/%s" />' % get_thumbnail(self.image.path, '50x50', crop='center', quality=50)) 
    except:
        return ''

Admin

class PizzaAdmin(admin.ModelAdmin):
	list_display = ['thumb']

Url

urlpatterns = [
	path('', home, name='home'),
	...
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Data

cheese.png
chicken.png
mushroom.png

load_pizza

from django.core.files import File

class Command(BaseCommand):

    def handle(self, *args, **kwargs):
        ...
        image_path = settings.BASE_DIR+'/data'
        for i in Pizza.types:
            img = '%s/%s.png' % (image_path,i[0])
            ...
            p.image.save('%s.png' % p.id,File(open(img, 'rb'))
    )
            print('Creating %s' % i[0])
        print('Done')

Templating

    {% thumbnail p.image "150x100" crop="center" as im %}
      <img class="card-img-top" src="{{ im.url }}">
    {% endthumbnail %}            

Clone this wiki locally