Невозможность доступа к изображению из ImageField из модели для отображения на одной из моих html-страниц
Я работаю над коммерческим приложением, в котором пользователь может создать объявление, а также загрузить изображение объявления. Данные обрабатываются с помощью ModelForm:
class ListingForm(ModelForm):
class Meta:
model = Listing
exclude = [
'date_made',
'user',
'category',
'is_active',
]
Модель ModelForm наследуется от модели Listing. Обратите особое внимание на upload_image атрибут :
class Listing(models.Model):
NAME_CHOICES = [
('Fashion', 'Fashion'),
('Toys','Toys'),
('Electronic','Electronics'),
('Home', 'Home'),
('Other', 'Other')
]
title = models.CharField(max_length= 64)
date_made = models.DateTimeField(auto_now_add=True)
description = models.TextField()
user = models.ForeignKey(User, to_field='username', on_delete=models.CASCADE, related_name='user_listings', null=True)
starting_bid = models.DecimalField(decimal_places=2, max_digits=264, default=10.00)
upload_image= models.ImageField(blank=True, upload_to='media/')
category = models.ForeignKey(Category, on_delete=models.CASCADE, to_field='name', related_name='category_listings', default=NAME_CHOICES[4][0], db_constraint=False)
listing_category = models.CharField(max_length=12, choices=NAME_CHOICES, null=True, default=NAME_CHOICES[4][0])
is_active = models.BooleanField(default=True)
def __str__(self):
return f'{self.title}'
Я также попытался внести некоторые конфигурации медиафайлов в мое приложение.
settings.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
(global/project) urls.py:
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("auctions.urls"))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Мой views.py выглядит следующим образом, не уверен, имеет ли он отношение к проблеме:
def create_listing(request):
if request.method == 'POST':
import datetime
listing_form = ListingForm(request.POST)
# bid = request.POST['starting_bid']
if listing_form.is_valid():
bid = listing_form.cleaned_data['starting_bid']
listing_form.save(commit=False)
# listing_form.user = request.user
listing_form.user = request.user
listing_form.date_made = datetime.datetime.today()
listing_form.is_active = True
listing_form.category = Category.objects.get(name=listing_form.cleaned_data['listing_category'])
listing_form.save()
Bid.objects.create(value=bid, listing=listing_form.instance)
return HttpResponse('Listing has been saved successfully!')
Последний html тег, который я не могу заставить работать, выглядит следующим образом:
<img src="{{MEDIA_URL}}{{listing.upload_image}}"class="img-fluid rounded-start" alt="Picture not available">
Я пытался просмотреть другие ответы на stackoverflow, но они, похоже, не решают проблему. Как заставить страницу отображать изображения?
