我正在使用 django 将图像文件上传到服务器。
当用户尝试在 django 模板中查看丢失的图像时,只显示损坏的图像,但我想显示默认的丢失图像文件。
如何处理物理文件被删除(或只是丢失)但位置仍存储在数据库中的可能性?
最佳答案
使用文件存储的 exists()
方法。例如,如果图像字段的名称是 image
,则代码将如下所示:
if obj.image.storage.exists(obj.image.name):
...
为了简化事情,您可以创建一个 custom template filter :
from django.conf import settings
@register.filter
def default_image(image, default_file):
if image.storage.exists(image.name):
return image.url
return settings.STATIC_URL + default_file
然后在模板中正确使用它:
<img src="{{ obj.image|default_image:'no-image.png' }}" />
关于python - django 模板上传文件 - 如何处理不存在的物理文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28687304/