multipart/form-data
文档中的每个部分都可以拥有自己的标题,例如一个部分可以有一个标题Content-Type: text/plain
。例如,这些部分可以从Web表单上传文件。
在the documentation for Django's UploadedFile
class中,我读了
UploadedFile.content_type
随文件一起上传的内容类型标题(例如text / plain或application / pdf)。与用户提供的任何数据一样,您不应相信上传的文件实际上是此类型。您仍然需要验证该文件是否包含内容类型标头声明的内容 - “信任但验证。”
好的,我应该根据声明的内容类型验证文件。所以当然,现在我需要编写一些测试来测试我的服务器是否确实正确验证了内容类型。其中一个测试是使用content-type: multipart/form-data
向我的服务器发出请求,其中至少有一个部分的内容与其内容类型不一致。
我该怎么做? The django.test.Client class has a post
method,可以发送类型为multipart/form-data
的请求。请求主体的多个部分作为字典传递给方法。这个字典的键是字符串,值是字符串或“文件对象”。
我希望了解:
multipart/form-data
请求正文。每个部分的标题是什么?Content-Type: text/plain
?答案 0 :(得分:4)
答案 1 :(得分:2)
Client
类继承自django.test.client.RequestFactory
(src)并且有效,您可以在Client
post
定义中看到它& #39; s基本上是对super
的调用,因此您可以参考RequestFactory
post definition。默认情况下,这会依次调用使用_encode_data的encode_multipart,正如您所注意到的那样,它指定" multipart / form-data"。
在这里,您可以看到为每个部分指定了一些标题(例如Content-Disposition
),但我没有看到为每个部分指定Content-Type
标题(或任何特定标题)的方法。