Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois une erreur 404 lorsque j'essaie d'accéder à mes fichiers multimédia Django téléchargés même si MEDIA_ROOT et MEDIA_URL sont définis ?

Pourquoi est-ce que je reçois une erreur 404 lorsque j'essaie d'accéder à mes fichiers multimédia Django téléchargés même si MEDIA_ROOT et MEDIA_URL sont définis ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-08 09:06:01644parcourir

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?

Dépannage du service de fichiers multimédias Django avec MEDIA_URL et MEDIA_ROOT

Lors de la tentative de téléchargement d'une image via l'interface d'administration de Django et d'y accéder via une URL ou sur le frontend, vous pouvez rencontrer l'erreur 404 frustrante si vos paramètres ne sont pas correctement configurés.

Paramètres MEDIA_ROOT et MEDIA_URL

Pour stocker les fichiers multimédias téléchargés, Django utilise deux paramètres : MEDIA_ROOT, qui précise le chemin d'accès au répertoire physique où seront stockés les fichiers, et MEDIA_URL, qui est le préfixe de l'URL utilisé pour accéder aux fichiers sur le web.

Dans votre cas, où vous avez définissez MEDIA_ROOT sur /home/dan/mysite/media/ et MEDIA_URL sur /media/, il peut sembler que tout est configuré correctement. Cependant, vous ne pourrez toujours pas accéder au fichier téléchargé tant que vous n'aurez pas configuré les modèles d'URL pour servir ces fichiers.

Servir des fichiers statiques en développement

Lors du développement local avec Django, servir des fichiers statiques comme des images est essentiel. Cependant, en production, vous souhaitez généralement configurer votre serveur Web (par exemple, Apache ou Nginx) pour gérer le service de fichiers statiques.

Pour le développement, Django fournit la fonction django.views.static.serve qui peut être utilisée pour servir des fichiers à partir d'un répertoire spécifié. Pour l'intégrer dans votre projet Django, suivez ces étapes :

  1. Mettez à jour vos paramètres :

    • Pour Django >= 1.7, ajoutez urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) à votre fichier urls.py.
    • Pour Django <= 1.6, ajoutez ce bloc dans un bloc if settings.DEBUG: dans vos URL. py file :
    from django.conf import settings
    if settings.DEBUG:
        # static files (images, css, javascript, etc.)
        urlpatterns += patterns('',
            (r'^media/(?P.*)$', 'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT}))

Cela garantira que lorsque DEBUG est True (généralement le cas lors du développement local), Django servira les fichiers statiques du répertoire MEDIA_ROOT.

Accès à l'image

Une fois les modèles d'URL configurés correctement, vous pouvez désormais accéder à l'image téléchargée en utilisant le préfixe d'URL MEDIA_URL suivi du chemin d'accès au fichier. Dans votre cas, vous accéderiez à l'image à l'adresse http://127.0.0.1:8000/media/images/myimage.png.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn