如何在模板内部确定图像是否已上传?

时间:2015-03-30 14:39:50

标签: python django django-models django-templates

我试图确定用户是否在通过表单提交数据后上传了图片。

我们说我有一个模特:

class Book(models.Model):
    cover_image = models.ImageField(upload_to="foo/bar/fun")

不需要封面图像,因此可以在没有cover_image值的情况下创建此对象。

现在,在模板中,我想检查是否有上传的文件。如果没有上传文件,则应显示默认的HTML块。我最初的方法似乎不起作用,而且我被困住了。 出于某种原因,图像区域显示的是,如果没有图像,则显示图像;因此,替代显示alt文本。实际应该显示的是不同的HTML,如此

{% if my_book_context_object.cover_image %}
<img src="the image"></img>
{% else %}
<img src="placeholder image"></img>
{% endif %}

我在考虑我可能会检查模型方法,但我不确定要检查的内容:

class Book(models.Model):
    cover_image = models.ImageField(upload_to="foo/bar/fun")

    def has_cover_image(self):
        ...unknown check logic...
        return True or False

1 个答案:

答案 0 :(得分:1)

我猜不需要检查你是否有图像。

您可以在模型中默认图像。默认是,如果没有人上传图像,则会显示默认图像。当您上传&#39;路线改变了。

class Book(models.Model):
    cover_image = models.ImageField(upload_to='foo/bar/fun', default='foo/bar/fun/taco.jpg')

根据我的说法,你的代码必须有效,我不知道为什么不行。 你应该写下你得到的错误。