我正在为 REST API 使用 django-rest-framework(最新),并使用内置的测试客户端在 django 中实现了一些测试用例。
以下 django 测试用例在 django 版本 < 1.5 下运行良好
self.client.put('/core/accounts/%s/'% self.account.id,
data = prepare_dict(self.account),
HTTP_AUTHORIZATION=self.token)
升级到 django 1.5,除了与HTTP PUT相关的测试外,所有测试都通过了, 同时调查发现此问题@https ://docs.djangoproject.com/en/dev/releases/1.5/#options-put-and-delete-测试客户端中的请求
如果您在没有 content_type 的 PUT 请求中使用 data 参数,则必须在将数据传递给测试客户端之前对数据进行编码并设置 content_type 参数。
因此,更新了我的测试以反映此更改并尝试遵循,但仍然获得 http 415 而不是 http 200
from django.test.client import MULTIPART_CONTENT, BOUNDARY, encode_multipart
self.client.put('/core/accounts/%s/'% self.account.id,
data = encode_multipart(BOUNDARY, prepare_dict(self.account)),
content_type=MULTIPART_CONTENT,
HTTP_AUTHORIZATION=self.token)
知道我错过了什么吗?PS:所有功能都可以从 django-rest-framework 内置 Web UI 正常工作