如何使用Django管理界面正确显示上传的文件?

时间:2014-07-13 06:06:42

标签: python django django-models django-admin image-uploading

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

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

enter image description here

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

enter image description here

我如何制作它,以便每当我上传文件时,路由到它都会自动添加到urls.py中? 我如何制作它以便在管理界面的钻取视图中显示照片的缩略图(如果我点击该缩略图,则应显示完整尺寸的图像)

这是我的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')

这是Admin文件:

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

1 个答案:

答案 0 :(得分:3)

您似乎忘记提供媒体文件,只需按照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