我定义了一个接受文件的API端点(例如,使用Django Rest框架(。在Django中,可以在检查响应时使用内容处理标头。
https://docs.djangoproject.com/en/1.11/refef/request-response/#telling-the--browser-the-browser-to-treat-to-treat-the-the-the-response-as-as-a-a-file-athachment 在,如果我们要在测试端点时设置标头,则如何使用REST-FRAMEWORK的APITESTCASE包含此标头?
我到目前为止尝试的是,但似乎不接受标题。
class TestSaleViews(APITestCase):
def test_sale_detail_view(self):
f = create_named_temporary_file()
files = {'archive': f}
basename = os.path.basename(f.name)
headers = {
'content-disposition': 'attachment; filename={}'.format(basename),
}
response = self.client.post(url, files, format='multipart', **headers)
找到答案!
django在其FileUploadparser中为此标头具有固定的关键字。是:HTTP_CONTENT_DISPOSITION
所以我需要替换它et voila:工作!
headers = {
'HTTP_CONTENT_DISPOSITION': 'attachment; filename={}'.format(basename),
}
https://github.com/encode/django-rest-framework/blob/master/rest_framework/parsers.py#l206