首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django admin和显示缩略图

Django admin和显示缩略图
EN

Stack Overflow用户
提问于 2009-09-06 07:15:36
回答 5查看 40.2K关注 0票数 52

我试图在Django admin中显示缩略图,但我只能看到图像的路径,而看不到渲染的图像。我不知道我做错了什么。

服务器媒体URL:

from django.conf import settings
(r'^public/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),

函数模型:

def image_img(self):
        if self.image:
            return u'<img src="%s" />' % self.image.url_125x125
        else:
            return '(Sin imagen)'
        image_img.short_description = 'Thumb'
        image_img.allow_tags = True

admin.py:

class ImagesAdmin(admin.ModelAdmin):

    list_display= ('image_img','product',) 

结果是:

<img src="http://127.0.0.1:8000/public/product_images/6a00d8341c630a53ef0120a556b3b4970c.125x125.jpg" />
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-06 07:43:08

这是在photologue的源代码中(请参阅models.py,略微修改以删除不相关的内容):

def admin_thumbnail(self):
    return u'<img src="%s" />' % (self.image.url)
admin_thumbnail.short_description = 'Thumbnail'
admin_thumbnail.allow_tags = True

list_display位看起来也是一样的,我知道这是可行的。在我看来唯一值得怀疑的是缩进- models.py代码末尾以image_img开头的两行代码应该与def image_img(self):相同,如下所示:

def image_img(self):
    if self.image:
        return u'<img src="%s" />' % self.image.url_125x125
    else:
        return '(Sin imagen)'
image_img.short_description = 'Thumb'
image_img.allow_tags = True
票数 75
EN

Stack Overflow用户

发布于 2014-01-30 14:24:24

在模型中添加一个方法(models.py):

def image_tag(self):
    return u'<img src="%s" />' % <URL to the image>
image_tag.short_description = 'Image'
image_tag.allow_tags = True

并在您的ModelAdmin (admin.py)中添加:

readonly_fields = ('image_tag',)
票数 7
EN

Stack Overflow用户

发布于 2012-07-14 02:06:18

加上@dominic,我想在多个模型中使用它,所以我创建了一个可以在每个模型中调用的函数,输入要显示的图像。

例如,在我的一个应用程序中:

from django.contrib import admin

from .models import Frontpage
from ..admin import image_file


class FrontpageAdmin(admin.ModelAdmin):
    list_display = ('image_thumb', ...)

    image_thumb = image_file('obj.image()') 

admin.site.register(Frontpage, FrontpageAdmin)

对于image,它是Frontpage的一个函数,用于返回图像。

在我的另一个应用程序中:

from django.contrib import admin

from .models import Exhibition
from ..admin import image_file


class ExhibitionAdmin(admin.ModelAdmin):
    list_display = ('first_image_thumb', ...)

    first_image_thumb = image_file('obj.related_object.image',
                                   short_description='First Image')

admin.site.register(Exhibition, ExhibitionAdmin)

这允许我指定图像对象和short_description,同时将样板保存在另一个文件中。该函数为:

from sorl.thumbnail import get_thumbnail
from django.conf import settings


def image_file(image, short_description='Image'):
    def image_thumb(self, obj):
        image = eval(image_thumb.image)
        if image:
            thumb = get_thumbnail(image.file, settings.ADMIN_THUMBS_SIZE)
            return u'<img width="{}" height={} src="{}" />'.format(thumb.width, thumb.height, thumb.url)
        else:
            return "No Image"

    image_thumb.__dict__.update({'short_description': short_description,
                                 'allow_tags': True,
                                 'image': image})
    return image_thumb
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1385094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档