Django管理员通过ImageField链接到图像

3

我已经建立了一个Django的活动模型,包含以下字段:

class Activity(models.Model):
    ...
    thumbnail = models.ImageField(upload_to="thumbs/", blank=True, null=True)

通过管理界面,我可以上传一张图片并正确放置在主目录下的缩略图文件夹中。当我尝试编辑我创建的活动时,界面会显示:当前:thumbs/image.png,这是一个指向http://localhost:8000/media/thumbs/image.png的超链接。当我点击此链接时,会出现404页面未找到的错误。如何让链接正确指向我上传的图片?如果可能的话,如何直接在管理界面中显示图片?
编辑:
MEDIA_ROOT = '/Users/.../mysite/media/'; MEDIA_URL = 'http://localhost:8000/media/'; 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)),
)

谢谢你!


使链接起作用的第一步是您的 urls.py 存在问题的症状。请单击“编辑”链接并添加您的 urls.py 文件内容来更新您的问题。 - Burhan Khalid
不要硬编码路径,使用import os代替 - catherine
1个回答

9

settings.py

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()

models.py

class Activity(models.Model):
    ...
    thumbnail = models.ImageField(upload_to="thumbs/", blank=True, null=True)

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



class AdminName(admin.ModelAdmin):
    .........
    list_display = ('image_',)

这是一个不错的解决方案,但设置部分有点多余,如果您使用staticfiles应用程序,则应该使用staticfiles_urlpatterns(),否则只需使用static()即可,因为其中一个已经调用了另一个。 - Samus_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接