Django管理后台显示缩略图
我想在Django的后台显示缩略图图片,但我只能看到图片的路径,而看不到实际的图片。我不知道我哪里做错了。
服务器的媒体网址:
from django.conf import settings
(r'^public/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
功能模型:
def image_img(self):
if self.image:
return u'<img src="%s" />' % self.image.url_125x125
else:
return '(Sin imagen)'
image_img.short_description = 'Thumb'
image_img.allow_tags = True
admin.py文件:
class ImagesAdmin(admin.ModelAdmin):
list_display= ('image_img','product',)
结果是:
<img src="http://127.0.0.1:8000/public/product_images/6a00d8341c630a53ef0120a556b3b4970c.125x125.jpg" />
6 个回答
7
在你的模型文件(models.py
)中添加一个方法:
def image_tag(self):
return u'<img src="%s" />' % <URL to the image>
image_tag.short_description = 'Image'
image_tag.allow_tags = True
然后在你的管理文件(admin.py
)中添加:
readonly_fields = ('image_tag',)
12
更新 v. 1.9
请注意,在 Django v.1.9 中,
image_tag.allow_tags = True
某些功能已经不再推荐使用,你应该改用 format_html()、format_html_join() 或 mark_safe() 来替代
所以你的 model.py 文件应该像这样:
...
from django.utils.html import mark_safe
def image_img(self):
if self.image:
return mark_safe('<img src="%s" />' % self.image.url_125x125)
else:
return '(Sin imagen)'
image_img.short_description = 'Thumb'
然后在你的 admin.py 文件中添加:
list_display= ('image_img','product',)
readonly_fields = ('image_img',)
在你的 admin.py 文件中,为了在管理面板的“编辑模式”中添加它,请添加:
fields = ( 'image_img', )
76
这是在photologue的源代码中找到的内容(请查看models.py
,我稍微调整了一下,去掉了一些无关的部分):
def admin_thumbnail(self):
return u'<img src="%s" />' % (self.image.url)
admin_thumbnail.short_description = 'Thumbnail'
admin_thumbnail.allow_tags = True
这里的list_display
部分看起来也完全一样,我知道这个是可以工作的。让我觉得有问题的只有你的缩进 - 在你的models.py
代码的最后,有两行以image_img
开头的代码应该和def image_img(self):
对齐,像这样:
def image_img(self):
if self.image:
return u'<img src="%s" />' % self.image.url_125x125
else:
return '(Sin imagen)'
image_img.short_description = 'Thumb'
image_img.allow_tags = True