У меня есть модель с именем Book в файле models.py.
И на основе этой модели было создано представление для отображения изображений как продуктов.
Которая отображает книги (продукты) на shop. html template.
Проблема в том, что я не могу получить изображения их обложек, которые сохраняются для каждого идентификатора издателя, который является продавцом этих книг.
Это код магазина. html (в котором я пытаюсь отобразить изображение).
<div class="container mt-4">
<div class="row">
{% for b in books|slice:":10" %}
<div class="col-lg-2 col-md-3 col-sm-4">
<div class="book-card">
<div class="book-card__book-front">
<img src={{MEDIA_URL}}{{b.cover.url}} alt="book-image">
</div>
</div>
<div class="book-card__title">
{{ b.title }}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
Это модель, в которую я кладу обложки книг по идентификаторам (именам) издателя
def book_cover_path(instance, filename):
return os.path.join(
"covers", instance.publisher.user.username, str(
instance.pk) + '.' + filename.split('.')[-1]
)
class Book(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
title = models.CharField('Title', max_length=255)
authors = models.ManyToManyField(Author, related_name='books_written')
publisher = models.ForeignKey(Publisher, on_delete=models.DO_NOTHING, related_name='books_published')
price = models.DecimalField('Price', decimal_places=2, max_digits=10)
description = models.TextField('Description')
upload_timestamp = models.DateTimeField('Uploading DateTime', auto_now_add=True)
categories = models.ManyToManyField(Category, related_name='book_category')
cover = models.ImageField(upload_to=book_cover_path, null=True,blank=True)
class Meta:
unique_together = ('title', 'publisher')
get_latest_by = '-upload_timestamp'
Это представление в views.py
def shop(req):
bookz = Book.objects.order_by('title')
var = {'books': bookz, 'range': 10}
return render(req, 'bookrepo/shop.html', context=var)
Это параметр мультимедиа в настройках. py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Это моя структура папок, я поместил обложки в media / cover / publisher / image.jpg ДАЖЕ я пробовал что-то вроде этого media / media / cover / publisher / image .jpg
Это структура каталога мультимедиа
Я получаю сообщение об ошибке НЕ НАЙДЕНО в консоли django
Не найдена ошибка, подобная этой
Я думаю, что это должно что-то делать с URL-адресом, который я пытаюсь создать, должно быть что-то не хватает.
В противном случае b.title работает нормально . Проблема связана только с поиском изображений.
Если кто-то не понимает функцию book_cover_path, они могут просто сказать мне, как сделать URL-адрес, как если бы книги лежали в media / cover / image.jpg, потому что я не могу это сделать это также. Как,
cover = models.ImageField(upload_to='covers', null=True,blank=True)