Это мой первый программный проект и первый вопрос о 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>
Буду очень признателен за любые предложения - спасибо гроздь.