Почему не показываются картинки в Django?
Тут такая проблема: картинка, загруженная через админку, не выводится на главную страницу:
вот код views.py (как по мне, именно здесь и проблема):
class IndexView(generic.ListView):
template_name = 'Homepage/index.html'
model = Goods
context_object_name = 'goods'
def description(self):
return self.description_text
def price(self):
return self.price_text
def image(self):
return self.image_sale
вот код от models.py:
class Goods(models.Model):
description_text = models.CharField(max_length=200)
price_text = models.CharField(max_length=200)
image_sale = models.ImageField(blank=True, upload_to='media/')
def __str__(self):
return self.image_sale
def __str__(self):
return self.description_text
def __str__(self):
return self.price_text
вот путь картинок в settings.py
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
вот как выглядит шаблон index.html
{% if good.image %}
<img src="{{ MEDIA_URL }}{{ good.image_sale }}">
{% endif %}
вот как выглядит построение media:

Ответы (1 шт):
Автор решения: em0ji
→ Ссылка
Дальше проверяешь все настройки...
setting.py:
import os
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
},
]
STATIC_URL = '/static/'
STATIC_DIRS = os.path.join(BASE_DIR, 'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = [(os.path.join(BASE_DIR,'static'))]
urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('image.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py:
from django.db import models
class Goods(models.Model):
description_text = models.CharField(max_length=200)
price_text = models.CharField(max_length=200)
image_sale = models.ImageField(blank=True, upload_to='images/')
def __str__(self):
return self.description_text
def __str__(self):
return self.price_text
views.py:
from django.views.generic import ListView
from .models import Goods
class HomeView(ListView):
model = Goods
template_name = 'index.html'
urls.py приложения:
from django.urls import path
from . import views
urlpatterns = [
path('', views.HomeView.as_view(), name='home'),
]
index.html:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Картинка</title>
</head>
<body>
{% for goods in goods_list %}
<img src="{{ goods.image_sale.url }}" alt="">
{% endfor %}
</body>
</html>
А вот как выглядит структура приложения image
У меня все загруженные картинки через админку отображаются на странице. Галочку не забудь прожать)
requirements.txt:
asgiref==3.4.1
Django==3.2.9
Pillow==8.4.0
pytz==2021.3
sqlparse==0.4.2
Добавлю ниже кусочек кода который отработал у автора вопроса:
<body>
{% for good in goods %}
<img src="{{ good.image_sale.url }}" alt="">
{% endfor %}
</body>
