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
,解决了这个问题。