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

标签 python django django-templates django-file-upload

我正在使用 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/

相关文章:

Python 与 Perl : performance reading a gzipped file

html - Django WeasyPrint CSS 集成警告 : Relative URI reference without a base URI: <link href ="/static/css/bootstrap.min.css"> at line None

python - 将文本区域值转换为Python列表

Python - matplotlib、pyplot、x 和 y 错误栏方向错误?

python 记录器的线程行为异常

django - 获取 django 中的当前语言环境

python - 我如何使用 Django 拥有多个导航路径,例如简化的向导路径和完整路径?

当变量值丢失时,Django 模板中的 Javascript 语法错误

python - Django 模板剥离空格?

python - SqlAlchemy:将表导出到新数据库