我尝试创建一个请求,使用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?
如果您先打开文件,然后将 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 将是一个关闭的文件对象。