django RequestFactory文件上传

sam*_*sam 10 testing django

我尝试创建一个请求,使用RequestFactory并发布文件,但我没有得到request.FILES.

    from django.test.client import RequestFactory
    from django.core.files import temp as tempfile

    tdir = tempfile.gettempdir()
    file = tempfile.NamedTemporaryFile(suffix=".file", dir=tdir)
    file.write(b'a' * (2 ** 24))
    file.seek(0)
    post_data = {'file': file}

    request = self.factory.post('/', post_data)
    print request.FILES  # get an empty request.FILES : <MultiValueDict: {}>
Run Code Online (Sandbox Code Playgroud)

如何通过我的文件获取request.FILES?

Ein*_*ein 5

如果您先打开文件,然后将 request.FILES 分配给打开的文件对象,您就可以访问您的文件。

request = self.factory.post('/')
with open(file, 'r') as f:
    request.FILES['file'] = f
    request.FILES['file'].read()
Run Code Online (Sandbox Code Playgroud)

现在您可以像往常一样访问 request.FILES。请记住,当您离开打开块时 request.FILES 将是一个关闭的文件对象。