当获取ImageField的宽度缺少图像时,防止Django模板中的错误

时间:2014-09-05 20:12:04

标签: django django-templates python-imaging-library

在Django中,当我有一个ImageField并希望在模板中输出它的宽度时,我会这样做:

{{ myimage.width }}

如果找到图像,这很有效。但是,如果由于某种原因无法找到图像获取宽度,则页面会创建错误,并且模板将不会呈现。但是,这种行为是有道理的,我如何优雅地使其失败?意思是,如果找不到图像并且能够继续渲染页面,我希望模板不输出myimage.width。

2 个答案:

答案 0 :(得分:5)

简单写一下

{% if myobject.image %}
    {{ myobject.image.width }}
{% endif %}

如果图像为无,则没有任何内容。

答案 1 :(得分:0)

可能不是您最喜欢的解决方案:您可以将方法get_my_image_width()添加到包含ImageField的模型中。此方法检查图像的存在,并在这种情况下返回None oder''。

或者您继承ImageField类并返回一个虚拟对象,而不是如果图像不存在则返回None。这个虚拟对象可以如下所示:

class Dummy(object):
    def __getattr__(self, attr):
        return None