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)
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: sluginlines = [ProductImageInline]...
0 Yorumlar