Django DRF GnericViewset不接受json数据

Django DRF GnericViewset不接受json数据,django,django-rest-framework,Django,Django Rest Framework,我正在使用Django 2.x和Django REST框架 我有一个定义如下的视图集 class UserSettingViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet): s

我正在使用
Django 2.x
Django REST框架

我有一个定义如下的视图集

class UserSettingViewSet(mixins.ListModelMixin,
                         mixins.RetrieveModelMixin,
                         mixins.UpdateModelMixin,
                         viewsets.GenericViewSet):

    serializer_class = UserSettingSerializer
    permission_classes = (IsAuthenticated, AdminAuthenticationPermission)

    def get_object(self):
        user_setting = UserSetting.objects.get(user=self.request.user)
        return user_setting

    def get_queryset(self):
        queryset = UserSetting.objects.filter(
            user=self.request.user
        )

        return queryset

    def update(self, request, *args, **kwargs):
        iso3 = request.POST.get('country', None)

        if iso3 is None or not iso3:
            raise ValidationError({'country': 'Country iso3 is required'})

        try:
            country = Country.objects.get(iso3=iso3.upper())
        except ObjectDoesNotExist:
            raise ValidationError({'country': 'Country does not exists'})

        user_setting = UserSetting.objects.get(user=request.user)

        user_setting.country = country
        user_setting.save()

        return super(UserSettingViewSet, self).update(request, *args, **kwargs)
当我从
Angular
调用
update
时,它不接受表单数据并给出错误信息

{'country': 'Country iso3 is required'}
从邮递员处以**表单数据的形式发送数据时工作正常**

角度请求的标头为

而邮递员是


如何设置Django以接受输入的json数据?

您需要使用
request.data
,而不是
request.POST
,在您的更新方法中。

您不会从Windows调用
update
。你必须像你的curl脚本那样发出put请求。是的,我也这么做。angular中也有相同的URL。angular代码是什么样子的?你能让邮差用json发送表单数据吗?如果是这样,会发生什么?以JSON的形式在postman中发送表单数据会产生与Angular相同的错误。谢谢,通过在
update()
函数中将
POST
替换为
data
,解决了这个问题。