我正在构建我的新 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
