django - 为什么 Django 不通过 ListView 将 ImageField 数据传递给模板?
问题描述
这是我的第一个编程项目,也是关于 StackOverflow 的第一个问题——所以请温柔一点!我一直很好,并检查了所有相关的现有问题和答案——如果我错过了,请提前道歉。
我有一个包含图像的模型:
模型.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)])
由这些视图处理:
视图.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-text 传递到模板中。这是我用来在模板中调用它的代码:
image_list.html
{% for image in images %}
<img src="{{ images.image.url }}" alt="{{ images.alt_text }}">
{% endfor %}
奇怪的是,它正在从数据库中获得响应,因为循环在呈现页面时会创建 5 个标签 - 并且表中有 5 个图像。但它不会添加图像 url 或替代文本:
127.0.0.1:8000/图像/
<div class="container">
<img src="" alt="">
<img src="" alt="">
<img src="" alt="">
<img src="" alt="">
<img src="" alt="">
</div>
非常感谢任何建议 - 非常感谢。
解决方案
推荐阅读
- java - 如何解决 Spring Boot 应用程序中的 RecoverableDataAccessException
- python - 与 Pytorch 的与门
- r - 从 Stmomo 对象计算预期寿命
- delphi - VirtualStringTree.HotColor 不与 toHotTrack 一起使用
- codenameone - CN1 align Label icon with regards to the baseline of its text
- python - Python/wand 代码在转换大型 PDF 时导致“Killed”
- c++ - 如何手动分配向量的大小?
- c++ - 模板数组长度作为参数
- excel - Excel VBA 复制范围(左侧的所有单元格)到嵌入的 Word 文档
- bash - 从脚本变量中提取文件名