Django Admin Panel Resim Thumbnail (1 İzleyici)

Katıldı
Mesajlar
438
Yaşadığın yer
Elazığ
Kredi
16
Django'da model içerisinde imagefield kullandığınız zaman admin panelinde form içerisinde bu resmi göremiyoruz. Sadece resmin adı görünmektedir. Bu yazıda bu resmi küçük bir şekilde nasıl görebiliriz ondan bahsedeceğiz. İlk önce model oluşturalım. #models.py from django.db import models class Image(models.Model): name = models.CharField(max_length=255) image = models.ImageField(upload_to="image") İlk önce listeleme sayfasında resimleri gösterelim. Bildiğiniz gibi admin sayfasında elemanları listelerken list_display özelliği ile istediğimiz alanları ve istediğimiz herhangi bir fonksiyondan dönen değeri yazdırabiliyoruz. Şimdi model içerisinde bir fonksiyon oluşrulım ve bu fonksiyon bize resmi döndürsün. class Image(models.Model): name = models.CharField(max_length=255) image = models.ImageField(upload_to="image") def image_thumb(self): return '<img src="%s" height="200" width="300"/>' % (self.image.url) image_thumb.short_description = 'Resim' image_thumb.allow_tags = True Daha sonra admin.py içerisine şu kodları yazıyoruz. from django.contrib import admin class ImageAdmin(admin.ModelAdmin): list_display = ['name', 'image_thumb'] admin.site.register(Image, ImageAdmin) Artık model satıları listelenirken resimleri görebiliyoruz.
Bu işlemden sonra resmin içeriğini görmek için tıklarsanır şöyle bir çıktı alacaksınız.
Gördüğünüz gibi resim görünmemekte sadece resmin yolu görünmektedir. Şimdi burada da resmi gösterelim. Yapmamız gereken admin.py dosyasına şu kodları eklemek. from django.contrib.admin.widgets import AdminFileWidget from django.utils.safestring import mark_safe class ImageWidget(AdminFileWidget): def render(self, name, value, attrs=None): output = [] if value and hasattr(value, "url"): output.append(('<a target="_blank" href="%s">' '<img src="%s" height="100" title="%s"/></a> ' % (value.url, value.url, value.name))) output.append(super(ImageWidget, self Burada özel bir widget ekliyoruz. Bu widget aldığı alan için bir geri değer döndürecek. Son olarak yapmamız gereken ise image alanımıza bu widgetı tanımlamak bunun için yine admin.py dosyasında az önce yazdığımız ImageAdmin sınıfını değiştirmek. class ImageAdmin(admin.ModelAdmin): list_display = ['name', 'image_thumb'] def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == 'image': request = kwargs.pop("request", None) kwargs['widget'] = ImageWidget return db_field.formfield(**kwargs) return super(ImageAdmin, self).formfield_for_dbfield(db_field, **kwargs) admin.site.register(Image, ImageAdmin) Artık resmi düzenleme sayfasında da görebiliyoruz.
Siz burada kendinize göre biraz daha özelleştirebilirsiniz.
 

Seomaster

Cezalı
Katıldı
Mesajlar
20
Kredi
0
Paylaşım için teşekkürler.
 

sanalkatil

Üye
Katıldı
Mesajlar
11
Kredi
0
Paylasım İçin Tesekkür Ederiz
 

Bu konuyı kimler okuyor

Top