3. Thumblailing - zdimon/pizza_store GitHub Wiki
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 %}