Django не может найти изображение

Когда я запускаю свое приложение Django с помощью Daphne

daphne -e ssl:8000:privateKey=ssl/privkey.pem:certKey=ssl/cert.pem website.asgi:application`

Я получаю

WARNING  Not Found: /media/images/lcg.jpg

я устанавливаю все сеттинги по справочникам и документации

settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

urls.py

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

index.html

{% for product in column1 %}
  <div class="item">
    {% if product.img %}
      <img src="{{ MEDIA_URL }}{{ product.img }}" alt="{{ product.name }}" class="product-img">
    {% endif %}

попробовал добавить {% get_media_prefix as MEDIA_URL %}, но ничего не изменилось

где product.img из DB - images\filename.png и у меня такая структура enter image description here

У меня была похожая проблема со статическими файлами, но ChatGPT посоветовал использовать whitenoise, и это решило проблему но не с img

Отредактируйте ваш asgi.py и добавьте следующий импорт:

from django.contrib.staticfiles.handlers import ASGIStaticFilesHandler

тогда измените следующую строку:

application = get_asgi_application()

до

application = ASGIStaticFilesHandler(get_asgi_application())

Кроме того, всегда используйте {{ product.img.url }} вместо {{ MEDIA_URL }}{{ product.img }}.

Вернуться на верх