Asi*_*nox 47 python django django-admin
我试图在Django管理员中显示缩略图,但我只能看到图像的路径,但不能看到渲染的图像.我不知道我做错了什么.
服务器媒体URL:
from django.conf import settings
(r'^public/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
Run Code Online (Sandbox Code Playgroud)
功能模型:
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
Run Code Online (Sandbox Code Playgroud)
admin.py:
class ImagesAdmin(admin.ModelAdmin):
list_display= ('image_img','product',)
Run Code Online (Sandbox Code Playgroud)
结果如下:
<img src="http://127.0.0.1:8000/public/product_images/6a00d8341c630a53ef0120a556b3b4970c.125x125.jpg" />
Run Code Online (Sandbox Code Playgroud)
Dom*_*ger 69
这是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
Run Code Online (Sandbox Code Playgroud)
这个list_display
位看起来也一样,我知道这很有效.对我来说唯一可疑的是你的缩进 - 从代码image_img
末尾开始的两行 models.py
应该是等级的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
Run Code Online (Sandbox Code Playgroud)
pal*_*der 10
请注意,在Django v.1.9中
image_tag.allow_tags = True
Run Code Online (Sandbox Code Playgroud)
所以你的model.py应该是这样的:
...
def image_img(self):
if self.image:
return marksafe('<img src="%s" />' % self.image.url_125x125)
else:
return '(Sin imagen)'
image_img.short_description = 'Thumb'
Run Code Online (Sandbox Code Playgroud)
并在您的admin.py中添加:
list_display= ('image_img','product',)
readonly_fields = ('image_img',)
Run Code Online (Sandbox Code Playgroud)
并在admin.py添加中将其添加到管理面板的"编辑模式"中:
fields = ( 'image_img', )
Run Code Online (Sandbox Code Playgroud)
小智 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
Run Code Online (Sandbox Code Playgroud)
并在您的ModelAdmin(admin.py
)中添加:
readonly_fields = ('image_tag',)
Run Code Online (Sandbox Code Playgroud)
添加到@dominic,我想在多个模型中使用它,所以我创建了一个函数,我可以在每个模型中调用,输入要显示的图像.
例如,我在一个应用程序中:
from django.contrib import admin
from .models import Frontpage
from ..admin import image_file
class FrontpageAdmin(admin.ModelAdmin):
list_display = ('image_thumb', ...)
image_thumb = image_file('obj.image()')
admin.site.register(Frontpage, FrontpageAdmin)
Run Code Online (Sandbox Code Playgroud)
具有image
返回图像的Frontpage功能.
在我的另一个应用程序:
from django.contrib import admin
from .models import Exhibition
from ..admin import image_file
class ExhibitionAdmin(admin.ModelAdmin):
list_display = ('first_image_thumb', ...)
first_image_thumb = image_file('obj.related_object.image',
short_description='First Image')
admin.site.register(Exhibition, ExhibitionAdmin)
Run Code Online (Sandbox Code Playgroud)
这允许我指定图像对象,short_description
同时将样板文件保存在另一个文件中.功能是:
from sorl.thumbnail import get_thumbnail
from django.conf import settings
def image_file(image, short_description='Image'):
def image_thumb(self, obj):
image = eval(image_thumb.image)
if image:
thumb = get_thumbnail(image.file, settings.ADMIN_THUMBS_SIZE)
return u'<img width="{}" height={} src="{}" />'.format(thumb.width, thumb.height, thumb.url)
else:
return "No Image"
image_thumb.__dict__.update({'short_description': short_description,
'allow_tags': True,
'image': image})
return image_thumb
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35353 次 |
最近记录: |