虽然我找到了关于如何在 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/'
网址.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)
模型.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)
管理员.py
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)