在django admin中查看上传图片的缩略图

View thumbnails of uploaded images in django admin

我正在尝试将缩略图添加到 django 管理中的列表视图。

这是我的 admin.py 应用程序,我做到了这一点:

from django.contrib import admin
from .models import Image
from django import forms
from django.db import models

class ImageAdmin(admin.ModelAdmin):
    list_display = ("label","tag","order",'Edit','image_img')
    list_editable= ("order",)
    list_filter = ('tag',)
    search_fields = ('tag', 'label')
    ordering = ['-order']
    list_display_links = ('Edit', )
    def Edit(self, obj):
        return "Edit" 
    def image_img(self,obj):
        if obj.pic:
            return '<img src="%s"  height="100px"/>' % obj.pic.url
        else:
            return 'No_image'
    image_img.short_description = 'Image'
    image_img.allow_tags = True    
admin.site.register(Image,ImageAdmin)

我的图片对象叫做"pic"。如果我只是将它添加到带有完整路径的列表视图 django returns link 中。我一直在寻找列表视图的模板,以便我可以添加 |safe 过滤器,但我找不到它。任何其他想法如何实现它?

如果您使用的是 Django > 2.0,您可以使用 mark_safe() 装饰器将例程标记为安全:

from django.utils.safestring import mark_safe

@mark_safe
def image_img(self,obj):
    if obj.pic:
        return '<img src="%s"  height="100px"/>' % obj.pic.url
    else:
        return 'No_image'

也可以作为函数使用:

def image_img(self,obj):
    if obj.pic:
        return mark_safe('<img src="%s"  height="100px"/>' % obj.pic.url)
    else:
        return 'No_image'

在旧版本的 Django 中,我相信您可以将 allow_tags 选项设置为 true:

image_img.allow_tags = True  # Put this after the function definition