【问题标题】:Display image in Template在模板中显示图像
【发布时间】:2020-12-23 21:17:57
【问题描述】:

我一直试图在我的模板中显示一个存储在我的模型中的图像。但我不能。有人可以告诉我我做错了什么吗?

提前谢谢你。

model.py

class DeviceType(models.Model):
    type_name = models.CharField(primary_key=True, max_length=64, unique=True)
    type_description = models.TextField(max_length=512, blank=True)

    def __str__(self):
        return self.type_name

    def get_absolute_url(self):
        return reverse("devices:type-detail", kwargs={"pk": self.pk})


class DeviceTypeImage(models.Model):
    image_status = IntegerField(unique=True)
    image = models.ImageField(upload_to='images/types/')
    image_device_type = models.ForeignKey(DeviceType, on_delete=models.CASCADE, related_name='image')

    def __str__(self):
        return str(self.image_status)

    def get_absolute_url(self):
        return reverse("devices:type-detail", kwargs={"pk": self.pk})

view.py

class DeviceTypeDetailView(DetailView):
    template_name = 'devices/type-detail.html'
    model = DeviceType

    def get_object(self):
        return get_object_or_404(DeviceType, pk=self.kwargs.get("pk"))

模板

<h1>Type detail</h1>

{{ object.type_name }}<br>
{{ object.type_description }}<br>
{{ object.image_status }}<br>
{{ object.image_device_type }}

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

urls.py

urlpatterns = [
    ....
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【问题讨论】:

  • objectDeviceType,而不是 DeviceTypeImage
  • 我如何在模板中访问我的图像?调用 get_object_or_404(DeviceType, pk=self.kwargs.get("pk")) 时不是自动访问 DeviceTypeImage 模型吗?
  • 好吧,因为它是ForeignKey,所以没有图像:DeviceType 可以有、一个或更多相关DeviceTypeImages.

标签: python django django-views django-templates


【解决方案1】:

objectDeviceType,而不是 DeviceTypeImageDeviceType 还可以有多个 DeviceTypeImages,所以object.imageDeviceTypeImages 的manager:它可以包装,一张或多张图片。

因此,您可以通过以下方式访问图像:

{{ object.type_name }}<br>
{{ object.type_description }}<br>

{% for image in object.image.all %}
    {{ image.image_status }}
    <img src="{{ image.image.url }}">
{% endfor %}

【讨论】:

    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多