Django получить загруженные изображения

Я создал модель для получения изображений и загрузки их в папку upload, и ссылка доступна в базе данных. Но когда я вызываю изображение в моем index.html, оно не работает

settings.py

  USERFILES_DIRS = os.path.join(BASE_DIR, 'upload')
  STATIC_URL = '/static/'
  STATICFILES_DIRS = [
                     USERFILES_DIRS,
                     os.path.join(BASE_DIR, 'static'),
                    ]

models.py

class MyShoes(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=50)
price = models.DecimalField(max_digits=10, decimal_places=2)
display_picture = models.ImageField(upload_to='upload', height_field=None,width_field=None, max_length=None)
featured = models.BooleanField()

views.py

def myIndex(request):
myShoes = models.MyShoes.objects.all()
return render(request,'index.html',{'myshoes':myShoes})

HTML

{% for x in myshoes %}
  <div class="card" style="width: 18rem;">
    <img src="{{x.display_picture}}" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">{{x.title}}</h5>
      <p class="card-text">{{x.description}}</p>
      <p class="card-text">{{x.price}}</p>
      {{x.display_picture}}
      <a href="" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
  {%endfor%}

здесь в моем HTML я получаю url 'upload/shoe-1384193-1279x850.jpg' но HTML показывает его в теге img

попробуйте это

# {{x.display_picture.url}}  <!-- from the media url -->
{% for x in myshoes %}
  <div class="card" style="width: 18rem;">
    <img src="{{x.display_picture.url}}" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">{{x.title}}</h5>
      <p class="card-text">{{x.description}}</p>
      <p class="card-text">{{x.price}}</p>
      {{x.display_picture}}
      <a href="" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
  {%endfor%}

Подробнее об изображении (медиа) в django

https://docs.djangoproject.com/en/3.2/topics/files/#using-files-in-models

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

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

MEDIA_URL и MEDIA_ROOT необходимо добавить urlpatterns в проект urls.py,
вместе с MEDIA_URL и MEDIA_ROOT, определенными в settings.py файле

MEDIA_URL = '/'
MEDIA_ROOT = os.path.join(BASE_DIR, '')
Вернуться на верх