我正在尝试使用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/'
从SO上关于此主题的类似帖子中得出,我在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/