Медиа Django 2 возвращает ошибку 404 (медиа папка верхнего уровня) - PullRequest
0 голосов
/ 07 апреля 2019

Запуск Django 2.1.5 с 32-битным Python 3.7.2, локальным хостом Win10, без nginx и т. Д. Клонировал репозиторий https://github.com/axelpale/minimal-django-file-upload-example.git

Может загружать файлы, и они отображаются в виде URL-ссылки в БД икак элемент списка на странице, но изображения / файлы не отображаются на странице и возвращают в консоли значение 404.

Возврат ошибки: GET http://127.0.0.1:8001/media/documents/2019/04/07/image.jpg 404 (Not Found) Я вижу файл в этом месте в проводнике.

Код в точности соответствует репо с добавлением следующего:

list.html строка 14

<li><img src="{{ document.docfile.url }}" height="60px"></li>

и

urls.py

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

urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [ path('', views.list, name='list')]  

Я следил за документацией, насколько мог, и посмотрел на другой пост SO, в котором говорится, что статический шаблон должен идти первым.

Следует отметить, что папка мультимедиа находится наверхний уровень каталога.

for_django_2-0

-myproject

- myproject

- media

- myapp

Также: DEBUG = True Пробовал работать с: python manage.py runserver 8001 --insecure и python manage.py runserver 8001

Любая помощь будет высоко ценится.

Спасибо, Джон

1 Ответ

0 голосов
/ 08 апреля 2019

Чтобы ответить на мой собственный вопрос, после еще нескольких поисков в другой теме я нашел это полезное видео.

https://www.youtube.com/watch?v=PIvlcmnayOE&t=55s

Видео объясняет то, что я пропустил в других уроках. Ваш статический путь URL должен быть в корневом проекте urls.py, а не в приложении urls.py

MyProject / urls.py

from django.contrib import admin
from django.urls import path, include

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

urlpatterns =  static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls'))

Теперь это работает.

...