PHP Laravel NGINX Symfony Dubbo Bootstrap Python Symfony Apache Protobuf linux Spring Django ASP Thrift Slim Typescript Docker Homestead MySQL Redis Git SVN ssh Root vim java scala sass less PHP Avro android html Golang Vue Angular React NGINX kotlin Rust Javascript

Django - Unsupported media type "application/octet-stream" in request 错误的解决办法

原创

原创不易 ~ 喜欢请点我关注

在使用Django REST framework的时候,如果你在测试PUT/PATCH请求时,遇到以下错误:

rest_framework.exceptions.UnsupportedMediaType: Unsupported media type "application/octet-stream" in request.

那么意为着你的请求是以application/octet-stream方式发送的,这也是Django的默认发送方式。

如果我们用的是self.client.putself.client.patch,即我们使用的是Django自带的TestCase进行测试,那么我们需要在请求时将content_type设置为application/json:

response = self.client.patch(reverse('resouces.single'), data={'name': 'Eagle'}, content_type='application/json')

或者,我们可以使用Django REST framework为我们准备的APITestCase:

from rest_framework.test import APITestCase

class MyTest(APITestCase):
    def test_patch_request_succeeds():
        response = self.client.patch(reverse('resouces.single'), data={'name': 'Eagle'})

可以看到,我们不需要再特别注明content_typeapplication/json,因为APITestCase已经帮我们处理好了。

想更多地了解APITestCase,请查看

http://www.django-rest-framework.org/api-guide/testing/#api-test-cases


正在加载验证码......
请先完成验证