ホームページ  >  記事  >  バックエンド開発  >  MEDIA_ROOT と MEDIA_URL が設定されているにもかかわらず、アップロードした Django メディア ファイルにアクセスしようとすると 404 エラーが発生するのはなぜですか?

MEDIA_ROOT と MEDIA_URL が設定されているにもかかわらず、アップロードした Django メディア ファイルにアクセスしようとすると 404 エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 09:06:01572ブラウズ

Why am I getting a 404 error when trying to access my uploaded Django media files even though MEDIA_ROOT and MEDIA_URL are set?

MEDIA_URL および MEDIA_ROOT を使用した Django メディア ファイル提供のトラブルシューティング

Django 管理インターフェイス経由で画像をアップロードし、URL 経由でアクセスしようとした場合フロントエンドでは、設定が適切に構成されていない場合、イライラする 404 エラーが発生する可能性があります。

MEDIA_ROOT および MEDIA_URL の設定

アップロードされたメディア ファイルを保存するために、Django は次を使用します。 2 つの設定: ファイルが保存される物理ディレクトリへのパスを指定する MEDIA_ROOT、および Web 上のファイルにアクセスするために使用される URL プレフィックスである MEDIA_URL。

あなたの場合、 MEDIA_ROOT を /home/dan/mysite/media/ に設定し、MEDIA_URL を /media/ に設定すると、すべてが正しく設定されているように見えるかもしれません。ただし、これらのファイルを提供するように URL パターンを設定するまでは、アップロードされたファイルにアクセスすることはできません。

開発中の静的ファイルの提供

を使用してローカルで開発する場合Django では、画像などの静的ファイルを提供することが不可欠です。ただし、運用環境では、通常、静的ファイルの提供を処理するように Web サーバー (Apache や Nginx など) を構成する必要があります。

開発用に、Django は使用できる django.views.static.serve 関数を提供します。指定されたディレクトリからファイルを提供します。これを Django プロジェクトに統合するには、次の手順に従います:

  1. 設定を更新します:

    • Django >= 1.7 の場合、 urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) を urls.py ファイルに追加します。
    • Django
    from django.conf import settings
    if settings.DEBUG:
        # static files (images, css, javascript, etc.)
        urlpatterns += patterns('',
            (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT}))

これにより、DEBUG が True の場合 (通常はローカル開発中の場合)、Django は MEDIA_ROOT ディレクトリから静的ファイルを提供します。

画像へのアクセス

URL パターンが正しく設定されていると、URL プレフィックス MEDIA_URL に続いてファイルへのパスを使用して、アップロードされた画像にアクセスできるようになります。あなたの場合、http://127.0.0.1:8000/media/images/myimage.png で画像にアクセスします。

以上がMEDIA_ROOT と MEDIA_URL が設定されているにもかかわらず、アップロードした Django メディア ファイルにアクセスしようとすると 404 エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。