Django 管理者経由で画像をアップロードし、その画像をフロントエンドのページで、または URL 経由で表示しようとしています。
これらはすべて私のローカル マシン上にあることに注意してください。
私の設定は次のとおりです。
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
upload_to パラメータを 'images' に設定し、ファイルはディレクトリに正しくアップロードされました:
'/home/dan/mysite/media/images/myimage.png'
ただし、次の URL で画像にアクセスしようとすると、
http://127.0.0.1:8000/media/images/myimage.png
404 エラーが発生します。
アップロードされたメディアに対して特定の URLconf パターンを設定する必要がありますか?
アドバイスをいただければ幸いです。
ありがとう。
ベストアンサー1
Django >= 1.7 のアップデート
Django 2.1 ドキュメントによると:開発中にユーザーがアップロードしたファイルを提供する
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG
Django がこれをデバッグ モードでのみ使用するように処理するため、もう必要ありません。
Django <= 1.6 のオリジナルの回答
これをurls.pyに書き込んでみてください
from django.conf import settings
# ... your normal urlpatterns here
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))
これにより、Djangoから静的メディアを提供できますDEBUG = True
(ローカルコンピュータで実行する場合)。ただし、実稼働環境に移行したときには、Webサーバー構成で静的メディアを提供できます。DEBUG = False