web-dev-qa-db-ja.com

ページが見つかりません404 Djangoメディアファイル

以下のように'/peaceroot/www/media/'で設定したメディアフォルダー(settings.py)にファイルをアップロードできます。

MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'

しかし、管理者を通じてアップロードされた画像ファイルにアクセスしようとしました

http:// localhost:8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

その後、404エラーが発生します。

ファイルはpeaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpgに存在します

22
madhu131313

プロジェクトのURLパターンにメディアのURLエントリを追加します。

from Django.conf.urls.static import static
from Django.conf import settings

...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
50
v1k45

MEDIA_ROOTのより良い方法は、

プロジェクトをシフトするとき、メディアパスを動的にするのは簡単です。

Settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))


MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'

urls.py

from Django.conf import settings
from Django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

これ見て

https://docs.djangoproject.com/en/dev/howto/static-files/

10
Kjjassy

追加するだけです。他の回答が機能しない場合は、他の回答の前に静的URLを配置してみてください。そのようです:

urlpatterns = static(...) + [...]

何が起こっているのかと言うと、リスト内のパターンのいくつかが、リクエストが静的ハンドラーに到達するのを妨げているということです。したがって、最初に静的ハンドラーを配置すると、これが解決されます。私のために働いた。

1
Seyi Shoboyejo