Почему Django не передает данные ImageField через ListView в шаблон? - PullRequest
0 голосов
/ 24 апреля 2020

Это мой первый программный проект и первый вопрос о StackOverflow - так что будьте осторожны! Я был хорош и проверил все соответствующие существующие вопросы и ответы - заранее извиняюсь, если я пропустил это.

У меня есть модель, которая содержит изображения:

models.py

class Image(models.Model):
    image = models.ImageField(upload_to='portfolio-images/', blank=False, null=False)
    uploaded_by = get_user_model()
    uploaded = models.DateTimeField(auto_now_add=True, editable=False)
    alt_text = models.CharField(verbose_name='Alternate text', max_length=200, blank=True, null=True)

    def __str__(self):
        return self.alt_text

    def get_absolute_url(self):
        return reverse('image_detail', args=[str(self.alt_text)])

, которая обрабатывается этими представлениями:

views.py

class ImageDetailView(DetailView):
    model = Image
    context_object_name = 'image'
    template_name = 'image_detail.html'

class ImageListView(ListView):
    model = Image
    context_object_name = 'images'
    template_name = 'image_list.html'

Теперь, когда они передаются в соответствующие шаблоны, DetailView работает как надо - передает URL-адрес в шаблон с использованием этого кода, и изображение отображается в браузере.

image_detail. html

... 
<img src="{{ image.image.url }}" alt="{{ image.alt_text }}">
...

Но ListView не передает url или alt-текст в шаблон. Вот код, который я использую для вызова его в шаблоне:

image_list. html

{% for image in images %}
<img src="{{ images.image.url }}" alt="{{ images.alt_text }}">
{% endfor %}

Странно, он получает ответ из базы данных, так как l oop создает 5 тегов при отображении страницы - и в таблице 5 изображений. Но он не добавляет URL-адрес изображения или альтернативный текст:

127.0.0.1: 8000 / images /

<div class="container">
  <img src="" alt="">
  <img src="" alt="">
  <img src="" alt="">
  <img src="" alt="">
  <img src="" alt="">
</div> 

Буду очень признателен за любые предложения - спасибо гроздь.

...