Как отобразить изображение с помощью django

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

{% for banner in banners %}
<div class="mySlides fade">
  <div class="numbertext">1 / 3</div>
  <img class="d-block w-100" src="{{ banner.banner }}" style="width:100%">
  <div class="text">{{banner.title}}</div>
</div>
{% endfor %}

модель

class Banner(models.Model):
    banner = models.ImageField(upload_to='image/', null=True, blank=True)

просмотров

def homepage(request):
    banners = Banner.objects.all()
    return render(request, 'mysite/homepage.html', {'banners': banners})

результат

введите описание изображения здесь

Используйте свойство 'url' поля ImageField.

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

{{ banner.banner.url }}

models.py

class Banner(models.Model):
    banner = models.ImageField(upload_to='image/', null=True, blank=True)

    def get_banner_url(self):
        return self.banner.url

html

{% for banner in banners %}
<div class="mySlides fade">
  <div class="numbertext">1 / 3</div>
  <img class="d-block w-100" src="{{ banner.get_banner_url }}" style="width:100%">
  <div class="text">{{banner.title}}</div>
</div>
{% endfor %}

чтобы убедиться, что ваш URL приходит, попробуйте следующее (просто для проверки):

 <div class="text">{{banner.get_banner_url }}</div>

если вы не видите URL, значит, дело в ваших медиатегах settings.py

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

main urls.py

urlpatterns = [  
  #your paths  
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 
Вернуться на верх