PHP Laravel NGINX html css Bootstrap Python Symfony Apache Windows linux jquery Django ASP vanilla Slim vagrant docker Homestead MySQL Redis Git SVN ssh Root vim PhpStorm Pycharm sass less PHP Laravel android html css Vue Angular React NGINX html css 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


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