web-dev-qa-db-fra.com

Page non trouvée 404 Médias Django

Je peux télécharger les fichiers dans le dossier multimédia ('/peaceroot/www/media/') que j'ai configuré dans settings.py comme ci-dessous

MEDIA_ROOT = '/peaceroot/www/media/'
MEDIA_URL = '/media/'

Mais par admin, j'ai essayé d'accéder au fichier image chargé.

http: // localhost: 8000/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

alors je reçois l'erreur 404. 

Le fichier existe à peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

16
madhu131313

Ajouter une entrée d’URL de média dans votre projet urlpatterns:

from Django.conf.urls.static import static
from Django.conf import settings

...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
40
v1k45

Le meilleur moyen pour MEDIA_ROOT est,

essayer de rendre dynamique le chemin des supports sera facile lorsque vous décalerez votre projet.

Paramètres.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)

Regarde ça

https://docs.djangoproject.com/en/dev/howto/static-files/

7
Kjjassy

Juste pour ajouter: au cas où les autres réponses ne fonctionneraient pas pour vous, essayez de placer l’URL statique avant les autres. Ainsi:

urlpatterns = static(...) + [...]

Il se peut que certains de vos modèles de la liste empêchent la demande d’atteindre les gestionnaires statiques. Donc, mettre les gestionnaires statiques en premier résout le problème. Travaillé pour moi 

1
Seyi Shoboyejo