Edu*_*nec 14 python django exception django-templates
我在Django模板中使用模板标签(标签是thumbnail),它抛出一个异常,使模板失败,出现500错误.我想阻止这种情况发生,因为我无法完全控制偶尔触发此异常的源图像,并在这些情况下使用空白/占位符图像.这是当前的模板代码:
{% thumbnail video.image_url "50x74" crop="center" as im %}
<img src="{% cdn_images im.url %}" />
{% empty %}
<img src="/media/img/noimage_thumb.png" alt="" />
{% endthumbnail %}
Run Code Online (Sandbox Code Playgroud)
这是例外(PIL抛出它):
TemplateSyntaxError at /
Caught IOError while rendering: cannot identify image file
Run Code Online (Sandbox Code Playgroud)
我搜索了解决方案,并提出了silent_variable_failure,这是一个属性,如果定义,则使Exception保持安静.我想这可能指向正确的方向,但据我所知,任何使用此解决方案都意味着我必须修改模板标签代码本身,这是一个外部库 - 我宁愿不这样做,
理想情况下,我想用我的代码替换代码中的第三行{% empty or exception_raised %}.
这样的事情存在吗?你知道其他选择吗?
Sam*_*lan 13
我总是处理这个问题的方法就是把它推到模型层.所以在你的模型中:
class MyImageModel(model.Model):
# model fields go here..
def get_url(self):
try:
# or whatever causes the exception
return self.url
except IOError:
return None
Run Code Online (Sandbox Code Playgroud)
在您的模板中:
{% thumbnail video.image_url "50x74" crop="center" as im %}
{% if im.get_url %}
<img src="{% cdn_images im.get_url %}" />
{% else %}
<img src="/media/img/noimage_thumb.png" alt="" />
{% endif %}
{% endthumbnail %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8639 次 |
| 最近记录: |