Django MEDIA_URL と MEDIA_ROOT 質問する

Django MEDIA_URL と MEDIA_ROOT 質問する

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.DEBUGDjango がこれをデバッグ モードでのみ使用するように処理するため、もう必要ありません。


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

おすすめ記事