以下のように'/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
に存在します
プロジェクトのURLパターンにメディアのURLエントリを追加します。
from Django.conf.urls.static import static
from Django.conf import settings
...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
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)
これ見て
追加するだけです。他の回答が機能しない場合は、他の回答の前に静的URLを配置してみてください。そのようです:
urlpatterns = static(...) + [...]
何が起こっているのかと言うと、リスト内のパターンのいくつかが、リクエストが静的ハンドラーに到達するのを妨げているということです。したがって、最初に静的ハンドラーを配置すると、これが解決されます。私のために働いた。