Skip to main content
 首页 » 编程设计

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

2024年08月14日44xing901022

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

这是我的应用程序的 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”。如果我只是将它添加到 ListView 中,django 会返回带有完整路径的链接。我一直在寻找 ListView 的模板,以便我可以添加 |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