在 Django Admin 中可视化上传的图像

Tin*_*Tin 5 python django django-models django-admin media-url

尽管我找到了有关如何在 Django-Admin 中正确显示图像的有用帖子(#1#2#3),但到目前为止我还没有成功地遵循这些建议。正如您在下面看到的,上传的图像没有正确显示,并且显示 404 错误。

下图说明了上传的图像虽然已成功上传到服务器上但未显示的事实: 上传图片的链接失效

当我用鼠标单击断开的链接时,浏览器上显示以下错误: 网址错误

编辑给定对象时,我还想知道如何显示缩略图而不是图像的路径: 图片的网址 在下面,您可以找到我迄今为止一直在使用的配置:

设置.py

import os
PROJECT_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..').replace('\\','/')
SITE_ROOT = PROJECT_ROOT

# Path to media files, e.g. images
MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

网址.py

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings
from . import views

urlpatterns = patterns('',
    # some url configs here ... removed for simplification purposes ;-)
)

if settings.DEBUG is True:
    urlpatterns += patterns('', (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}) )
    #urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

模型.py

class Image(models.Model):
    title = models.CharField(db_column='title', max_length=180, blank=True, null=True, help_text="Title of the image") 
    imagefile = models.ImageField(db_column='imagefile', upload_to='images', null=True, blank=True, help_text="Load an image.")
    #... some other fields here, removed for simplification purposes ;-)

    def image_(self):
        return '<a href="/media/{0}"><img src="/media/{0}"></a>'.format(self.imagefile)
    image_.allow_tags = True

    class Meta:
        managed = False
        db_table = 'image'
    
    def __unicode__(self):
        return u'%s' % (self.title)
Run Code Online (Sandbox Code Playgroud)

管理文件

from django.contrib import admin
from .models import Image

class ImageAdmin(admin.ModelAdmin):
    list_display = ('title', 'description', 'image_', )
    search_fields = ('title', 'description')
    list_per_page = 25

admin.site.register(Image, ImageAdmin)
Run Code Online (Sandbox Code Playgroud)

jar*_*ssi 2

你有没有尝试过这样的事情:

管理员.py

from django.contrib import admin
from .models import Image

class ImageAdmin(admin.ModelAdmin):
    list_display = ('title', 'description', 'image_display', )
    search_fields = ('title', 'description')
    list_per_page = 25

    def image_display(self, obj):
        return '<a href="/media/{0}"><img src="/media/{0}"></a>'.format(self.imagefile.url)
    image_.allow_tags = True
    image.short_descripition = u'IMAGE'

admin.site.register(Image, ImageAdmin)
Run Code Online (Sandbox Code Playgroud)

这总是对我有用。让我知道这是否有帮助。