2

我正在尝试 Django 并遇到以下问题:

我有一个模型类Property,它具有各种属性,其中有一个图像。image属性定义为:

image = models.FileField(
    upload_to = 'properties',
    default = 'properties/house.jpeg')

该目录properties是一个子目录,images其定义settings.py如下:

MEDIA_ROOT = '/Users/.../Development/pms/images/'
MEDIA_URL = 'http://localhost:8000/images/'

源自关于这个主题的类似帖子,我在我的Property模型中添加了以下内容:

def admin_image(self):
    return '<img src="images/%s" width="100"/>' % self.image
admin_image.allow_tags = True

然后我将admin_image()作为属性添加到列表显示中:

list_display = ('admin_image', ...)

当我在管理应用程序中检查图像的 URL 时,我得到以下信息:

http://127.0.0.1:8000/admin/properties/property/images/properties/house.jpeg/

这会生成 404,因为 URL 生成不正确。首先路径不正确,其次在 URL 的末尾有一个尾随 /。

我显然错过了一些东西......我做错了什么?

编辑:

感谢@okm 提供的各种指示。我做了以下事情:

在我的 urls.py 中添加了以下内容:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings

... original url patterns ...

urlpatterns += staticfiles_urlpatterns()

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^images/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
   )

然后在 settings.py 中设置 MEDIA_ROOT:

absolute/filesystem/path/to/images

在 settings.py 中设置 MEDIA_URL:

/images/
4

1 回答 1

1

根据doc & here,尝试self.image.url代替'...' % self.image

于 2012-12-18T15:55:53.593 回答