如何在Django管理界面中美观地显示上传的文件?
我正在搭建一个新的Django应用,现在还处于初期阶段。所以目前我主要专注于设计数据模型。表单、视图、模板、前端AJAX等内容会在后面再处理。我正在使用Django的管理界面来创建和查看一些虚拟的模型对象。
我有一个模型,其中有一个ImageField属性。在管理界面上,我可以上传一个叫做taco.jpg的文件到这个模型里。我可以去文件系统查看,发现这个文件确实已经成功上传。它的文件路径也在管理界面上显示出来了:
但是,当我点击那个链接时,会出现错误,因为在urls.py文件中没有为这个文件指定路径:
我该怎么做才能让每次上传文件时,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')
这是管理文件:
class PhotoAdmin(admin.ModelAdmin):
fields = ["image",]
list_display = ("image",)
admin.site.register(Photo, PhotoAdmin)
1 个回答
3
看起来你忘了处理媒体文件。要做到这一点,只需按照这个链接上的说明操作。
如果你想在管理后台显示图片的预览,可以这样做:
把以下内容添加到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