在Django中,当我有一个ImageField并希望在模板中输出它的宽度时,我会这样做:
{{ myimage.width }}
如果找到图像,这很有效。但是,如果由于某种原因无法找到图像获取宽度,则页面会创建错误,并且模板将不会呈现。但是,这种行为是有道理的,我如何优雅地使其失败?意思是,如果找不到图像并且能够继续渲染页面,我希望模板不输出myimage.width。
答案 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