【问题标题】:Django admin link to image via ImageFieldDjango 管理员通过 ImageField 链接到图像
【发布时间】:2013-03-01 12:56:02
【问题描述】:

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

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

通过管理界面,我可以上传正确放置在主目录的 thumbs 文件夹中的图像。当我尝试编辑我创建的活动时,界面显示:Currently: thumbs/image.png 这是一个指向http://localhost:8000/media/thumbs/image.png 的超链接。当我点击这个链接时,我得到一个 404 page not found 错误。如何让链接正确指向我上传的图片?如果可能的话,我怎样才能直接在管理界面中显示图像?

编辑:

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 出现问题的症状。请点击edit 链接更新您的问题并添加您的urls.py 文件的内容。
  • 不要硬编码路径,改用 import os

标签: django image


【解决方案1】:

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(),就像一个人已经打电话给另一个人一样。
猜你喜欢
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多