Python django模板上载文件-如何处理不存在的物理文件

Python django模板上载文件-如何处理不存在的物理文件,python,django,django-templates,django-file-upload,Python,Django,Django Templates,Django File Upload,我正在使用django将图像文件上载到服务器 当用户试图在django模板中查看丢失的图像时,只显示断开的图像,但我想显示一个默认的丢失图像文件 如何处理物理文件被删除(或只是丢失)但位置仍存储在数据库中的可能性?使用python检查文件对象 file_obj = Model.objects.get(id=1) if os.path.exists(file_obj.file): file_path = file_obj.file else: file_path = defaul

我正在使用django将图像文件上载到服务器

当用户试图在django模板中查看丢失的图像时,只显示断开的图像,但我想显示一个默认的丢失图像文件


如何处理物理文件被删除(或只是丢失)但位置仍存储在数据库中的可能性?

使用python检查文件对象

file_obj = Model.objects.get(id=1)

if os.path.exists(file_obj.file):
    file_path = file_obj.file
else:
    file_path = default_path
使用文件存储的方法。例如,如果图像字段的名称为
image
,则代码如下所示:

if obj.image.storage.exists(obj.image.name):
    ...
要简化工作,您可以创建一个:

然后在模板中正确使用它:

<img src="{{ obj.image|default_image:'no-image.png' }}" />


catavaran,我收到错误消息
'str'对象没有属性“storage”
。我必须在筛选文件中包含什么导入语句?另外,我将
@register.simple_标记
更改为
@register.filter()
。我走对了吗?对不起,当然应该是
@reguster.filter
。至于
'str'对象…
错误,我怀疑您向筛选器传递了错误的属性。请显示出现此错误的模板片段。只是为了确保:您应该将图像或文件对象传递给模板筛选器,而不是文件名。事实上,由于模板变量中的{STATIC_URL}}变量(我不确定如何构造它),我一直对模板代码有问题如图所示:
删除变量的
url
部分,并在模板过滤器中添加
静态url
,如我的示例所示:
{attachment\u detail.attachment\u document | default_image:'img/attachments/attachment\u not\u upload.png'}
<img src="{{ obj.image|default_image:'no-image.png' }}" />