DJANGO - Загрузка изображения с последующим отображением на шаблоне
Я пытаюсь отобразить 'plant_image' в цикле for на dashboard.html.
Я могу добиться отображения всех остальных полей, но изображение не отображается.
Я понимаю, что есть некоторая разница между разработкой и производством, но я просто хочу, чтобы это работало в разработке на данный момент. Если кто-то может объяснить, как заставить это работать, я буду очень благодарен.
model.py
class Plant(models.Model):
plant_name = models.CharField(max_length=30)
plant_image = models.ImageField(upload_to ='upload/', height_field=None, width_field=None, max_length=None)
dashboard.html - шаблон
{% for plant in plants %}
<p>/{{plant.plant_name}}</p>
<img src="{{plant.plant_image}}" alt="Plant Image" width="250" height="250">
{% endfor %}
views.py
def dashboard(request):
plants = Plant.objects.all()
return render(request, 'dashboard.html', {'plants': plants})
urls.py
urlpatterns = [
path('', views.dashboard, name='dashboard'),
]
В src изображения вы должны использовать "plant.plant_image.url", иначе оно не будет работать.
Итак, в dashboard.html - template нужно написать следующее:-
{% for plant in plants %}
<p>/{{plant.plant_name}}</p>
<img src="{{plant.plant_image.url}}" alt="Plant Image" width="250" height="250">
{% endfor %}
Для получения "url изображения" нужно использовать "plant.plant_image.url".
Здравствуйте в вашем HTML вы должны указать url изображения для отображения изображения
{% for plant in plants %}
<p>{{plant.plant_name}}</p>
<img src="{{plant.plant_image.url}}" alt="Plant Image" width="250" height="250">
{% endfor %}
попробуйте на HTML, если он все еще не работает, вы должны написать свойство в вашем models.py
class Plant(models.Model):
plant_name = models.CharField(max_length=30)
plant_image = models.ImageField(upload_to ='upload/', height_field=None, width_field=None, max_length=None)
@property
def plant_image_url(self):
return '%s%s' % (settings.HOST, self.plant_image.url) if self.plant_image else ''
и на вашем html
{% for plant in plants %}
<p>{{plant.plant_name}}</p>
<img src="{{plant.plant_image_url}}" alt="Plant Image" width="250" height="250">
{% endfor %}