Страница не найдена 404 медиафайлов Django

Я могу загрузить файлы в папку "media" ( '/peaceroot/www/media/'), который я установил в settings.py ниже

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

но через admin я попытался получить доступ к загруженному файлу изображения

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

тогда я получаю ошибку 404.

файл существует в peaceroot/www/media/items/1a39246c-4160-4cb2-a842-12a1ffd72b3b.jpg

3 ответов


добавить запись media url в проект urlpatterns:

from django.conf.urls.static import static
from django.conf import settings

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

лучший способ для MEDIA_ROOT,

попробуйте сделать Media path динамическим будет легко, когда вы сдвинете свой проект.

Settings.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)

смотреть на это

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


просто добавить: в случае, если другие ответы не работают для вас, попробуйте поместить статический url-адрес перед другими. Вот так:

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

возможно, некоторые из ваших шаблонов в списке не позволяют запросу достичь статических обработчиков. Таким образом, установка статических обработчиков сначала решает это. Работать на меня.