Django是否关闭并删除TemporaryUploadedFiles和InMemoryUploadedFiles?

问题描述 投票:2回答:1

我已经阅读了TemporaryUploadedFiles和InMemoryUploadedFiles的所有documentation,但他们从未谈论过清理。我知道Python临时文件需要关闭才能自动删除。

@api_view(['POST', ])
def test(request):
    #img is type InMemoryUploadedFile
    for img in request.FILES.getlist('images'):
        Model.objects.image = img
        Model.save()

    #vid is type TemporaryUploadedFile
    for vid in request.FILES.getlist('videos'):
        Model.objects.video = vid
        Model.save()

在上面的代码中,是否会自动删除并清理TemporaryUploadedFiles和InMemoryUploadedFiles?

django file django-models multipartform-data temporary-files
1个回答
1
投票

这些文件已关闭,WSGI处理程序可以提供一种称为close的方法,该方法称为请求的后处理。

Django源代码(http / request.py)

class HttpRequest:
  ...
  def close(self):
     if hasattr(self, '_files'):
        for f in chain.from_iterable(list_[1] for list_ in self._files.lists()):
           f.close()

编辑:

Django全局配置文件上传器InMemory和Temp文件的两种类型。所有这些类都实现close方法,request对象的close方法注册为_resource_closers,并从HttpResponseBaseclose方法调用这些方法。

© www.soinside.com 2019 - 2024. All rights reserved.