2

私はDjangoを試していますが、次の問題に遭遇しました:

Propertyイメージを含むさまざまな属性を持つモデル クラスがあります。プロパティは次のimageように定義されます。

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

ディレクトリは、次のように定義されてpropertiesいるサブディレクトリです。imagessettings.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/
4

1 に答える 1

1

ドキュメントここによると、self.image.url代わりに試してください'...' % self.image

于 2012-12-18T15:55:53.593 に答える