Mark_safe не отображает html

Пытаюсь создать миниатюру для предварительного просмотра, тег img не отображается. Я вижу так много вопросов об этом, и пробовал различные решения безуспешно.

enter image description here

admin.py

class AdminProductImages(admin.TabularInline):
    model = ProductImages
    form = ProductImagesForm
    extra = 3
    max_num = 3

    def image_tag(self, obj):
        return mark_safe('<img src="%s" style="width:150px;height:150px;"/>') % (obj.image_file_w200_png.url)
    image_tag.short_description = 'xImage'
    image_tag.allow_tags = True

    fields = ( 'image_file_w200_png','image_tag', )
    readonly_fields = ('image_tag',)

    list_display =('image_file_w200_png','image_tag')
    """
    fieldsets = (
        (None, {'fields': ('image_file_w200_png',)}),
    )
    """
    add_fieldsets = (
        (None, {
            'fields': ('image_file_w200_png',),
        }),
    )
    
    class Media:
        js = ('js/img_product_upload.js',)

models.py

class ProductImages(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    image_type = models.CharField(max_length=33,default='image_type')    
    image_file_w200_png = models.ImageField(
        upload_to=upload_to_image_file_w200_png,
        null=True,
        blank=True,
        default='magickhat-profile.jpg'
    )
    #...

forms.py

class ProductImagesForm(ModelForm):
    image_file_w200_png = forms.FileField(widget=forms.ClearableFileInput(
        attrs={
            'class': 'image_add_product'
            }
    ))

    class Meta:
        model = ProductImages
        fields = ['image_file_w200_png',]

После нескольких дней, не могу найти ошибку, пока... Некоторые советы приветствуются. Django 4.0

Вы должны отформатировать строку перед тем, как обернуть ее в mark_safe, иначе вы построите строку, а не строку, обернутую в "безопасный контейнер":

class AdminProductImages(admin.TabularInline):
    # …

    def image_tag(self, obj):
        return mark_safe('<img src="%s" style="width:150px;height:150px;"/>' % obj.image_file_w200_png.url)

или через интерполяцию строк:

class AdminProductImages(admin.TabularInline):
    # …

    def image_tag(self, obj):
        return mark_safe(f'<img src="{obj.image_file_w200_png.url}" style="width:150px;height:150px;"/>')
Вернуться на верх