Skip to main content
 首页 » 编程设计

python之如何使用Django管理界面体面地显示上传的文件

2024年08月27日27telwanggs

我正在构建我的新 Django 应用程序。它正处于起步阶段。所以现在我只专注于设计数据模型。表单、 View 、模板、前端 AJAX 等都将在稍后出现。我正在使用 Django 管理界面来创建和查看虚拟模型对象。

我有一个带有 ImageField 属性的模型。使用管理界面,我可以将名为 taco.jpg 的文件上传到该模型。我可以进入文件系统,看到这个文件已经成功上传。它的文件路径也显示在管理界面中:

但是,当我单击该链接时,它会产生错误,因为在 urls.py 中没有指定到该文件的路由:

我如何做到每次上传文件时,到它的路由都会自动添加到 urls.py 中? 以及如何使照片的缩略图显示在管理界面的向下钻取 View 中(如果我单击该缩略图,应显示全尺寸图像)

这是我的 urls.py 文件:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 
urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
) 

这是我的数据模型:

class Photo(models.Model): 
    image = models.ImageField(null=True, upload_to='documents/%Y/%m/%d') 

这是管理文件:

class PhotoAdmin(admin.ModelAdmin): 
    fields = ["image",] 
    list_display = ("image",) 
admin.site.register(Photo, PhotoAdmin) 

请您参考如下方法:

您似乎忘记了提供媒体文件,所以请按照 this 操作

要在admin 中显示图像预览,您可以执行以下操作:

将此添加到 PhotoAdmin:

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

所以 PhotoAdmin 应该是这样的:

class PhotoAdmin(admin.ModelAdmin): 
    fields = ["image",] 
    list_display = ("image","image_img") 
 
 
  def image_img(self): 
        if self.image: 
            return u'<img src="%s" />' % self.image.url  
        else: 
            return '(No image found)' 
    image_img.short_description = 'Thumb' 
    image_img.allow_tags = True