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 %}
Вернуться на верх