5. Python-Django ile e-Ticaret Sitesi yapımı- Admin panelinde görsellik-Eklenen resimlerin adminde de görünmesi uygulaması:

 Bu örnekte projemizin admin panelinde de ürün ekleme işlemi yapılınca ürünün resmi eklendiğinde -bu resmin de admin panelinde görünmesini istiyoruz. Bu işlemi yapabilmek için aşağıdaki adımları izleyebilirsiniz.


1.  Aşağıdaki metodu product_urun app-models.py içinde tanımladığımız sınıflardan class product un bir metodu (image_tag) olarak yazıyoruz.(yani içine yazıyoruz)

ilk olarak bir de yine bu dosyada aşağıdaki komutla mark_safe çağırılması gerekir. mark_safe bize etiketi kodda yazdığımız html kodlarının html kodu olarak işlev yapmasını sağlar. Bu komutu yazmazsak html ye özgü olan < ,/> gibi işaretleri django framework  başka türlü yorumlar.

Bu dosyada en üste eklenecek kod:
from django.utils.safestring import mark_safe

yine bu dosyada class Product altına yazılacak image_tag metoduna aait kodlar.

def image_tag(self):
if self.image:
return mark_safe( '<img src= "{}" height="50" />'.format(self.image.url))
else: return "-resim yüklenmemiş-"


image_tag.short_description = 'Image'



2. Projenin ana dosyasındaki url.py dosyasına aşağıdaki kodların eklenmesi gerekir. İki farklı şekilde url eklemesi yapıldı istediğinizi kullanabilirsiniz.Biz kodlarda 1.yi kullandık.

url.py dosyası kodları 1:(burada static ayarları url nin devamına eklendi)


from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
path('home/', include('home.urls')),
path('product_urun/', include('product_urun.urls')),
] + static(settings.MEDIA_URL, document_root= settings.MEDIA_ROOT) + static(settings.STATIC_URL,

'''if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)'''

url.py dosyası kodları 2:(burada static ayarları if yapısı içinde  url e eklendi)
from django.conf import settings
from django.conf.urls.static import static
...
...

urlpatterns = [
...
,
...,
...,
]

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL
, document_root= settings.MEDIA_ROOT)


NOT: SETTİNGS.PY DOSYANIZDA AŞAĞIDAKİ AYARLARIN GİRİLMİŞ OLMASI GEREKİR.(uploads yeride media veya başka bir isim verilebilir.)

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'staticfiles'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# MEDIA_URL = '/media/'
MEDIA_URL = '/uploads/' # medialar url ler nasıl gelecek
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') # medyaların yükleneceği yer.

3. product_urun app - admin.py içine(image_tag eklendi):

class ProductAdmin(admin.ModelAdmin):
list_display = [
...,'image_tag']
list_filter = [
'status', 'category'] readonly_fields = ('image_tag',) #belirli bir                                     #fields-alanı sadece okunur yapar                                      #düzenlemeye izin vermez. örn: slug
inlines = [ProductImageInline]
...

4. Yukarıdaki adımları eksiksiz ve dikkatli bir şekilde uygularsanır, artık adminde imagelarınızın küçük halini görebilceksiniz.






Yorum Gönder

0 Yorumlar