私は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/
これにより、URL が正しく生成されないため、404 が生成されます。1 つ目はパスが正しくないこと、2 つ目は 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/