如何从 django-rest-framework 中的文件列表中过滤图像

Posted

技术标签:

【中文标题】如何从 django-rest-framework 中的文件列表中过滤图像【英文标题】:how to filter images from a list of files in django-rest-framework 【发布时间】:2021-09-20 14:57:31 【问题描述】:

我有一个 Django 休息服务器,它提供一个文件列表来响应前端。我想知道我是否可以按图像过滤这些文件并仅向我的反应前端显示图像。我搜索了很多,但找不到任何有用的东西。请帮我。提前谢谢你。

class FileListView(generics.ListAPIView):
    serializer_class = ListFileSerializer
    permission_classes = (permissions.IsAuthenticated,)

    def get_queryset(self):
        owner = self.request.user.username
        return File_Uploader.objects.filter(owner=owner)

【问题讨论】:

您需要按扩展名拆分文件名,然后过滤。或者only images是什么意思? 我可以通过扩展过滤图像,但我想涵盖所有类型的图像,而不仅限于少数扩展。 Python有什么方法可以将文件检测为图像 你应该以任何方式制定规则然后实施它。 【参考方案1】:

我终于用这个技巧让它工作了。

在我的模型中添加了这个字段。

is_image = models.BooleanField(default=False)

当用户上传文件时,我正在使用以下代码检查文件是否为图像。

if 'image' in request.FILES["file"].content_type:
    request.data['is_image'] = True
else:
    request.data['is_image'] = False

现在我可以根据这个 is_image 字段轻松过滤文件。

如果这不是一个好的解决方案,请告诉我..

感谢您查看我的问题。我真的很感激。

【讨论】:

以上是关于如何从 django-rest-framework 中的文件列表中过滤图像的主要内容,如果未能解决你的问题,请参考以下文章

从 Django django-rest-framework 视图有条件地返回 JSON 或 HTML 响应

django-rest-framework 和 swagger api 文档

django-rest-framework 令牌认证和注销

django-rest-framework:如何序列化已经包含 JSON 的字段?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

如何使用 django-rest-framework 进行社交登录? [关闭]