Не отоброжается загруженная в папку media картинка в Django
Я пишу отдельную страницу с более подробной информацией о турах, предлагаемых тур агентством. Мне надо вывести загруженную картинку в media
папку. Что мне нужно сделать для этого?
urls.py
(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 = [
path('admin/', admin.site.urls),
path('', include('core.urls')),
path('summernote/', include('django_summernote.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
X_FRAME_OPTIONS = 'SAMEORIGIN'
urls.py
приложения:
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from . import views
app_name = "core"
urlpatterns = [
path("", views.index, name = "index"),
path("blog", views.blog, name = "blog"),
path('email', views.email, name = 'email'),
path("blog-single", views.blogSingle, name = "blogSingle"),
path("tour-details/<int:ID>", views.portfolioDetails, name = "portfolioDetails"),
path('success', views.success, name = 'success'),
path('mailist', views.mailist, name = 'mailist'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
функция из views.py
, отвечающая за эту страницу:
def portfolioDetails(request, ID):
relevant_tour = Tour.objects.get(id = ID)
context = {"tour":relevant_tour}
return render(request, 'core/tour-details.html', context)
models.py
тура;
class Tour(models.Model):
title = models.CharField(max_length=64)
description = models.TextField()
image = models.ImageField(upload_to="tours/")
cities = models.ManyToManyField(City, related_name="continents")
duration = models.IntegerField()
continent = models.ForeignKey(Continent, related_name= "continents", on_delete=models.CASCADE)
def __str__(self):
return self.title
html
код страницы:
<div class="col-lg-8">
<img src= "media/{{tour.image}}" class="img-fluid tour-image" alt="Проверьте ваше интернет соединение">
</div>
Вместо обычной картинки просто отоброжается alt
текст.
Источник: Stack Overflow на русском