首页 文章

Django更新api

提问于
浏览
0

我通过django创建用户配置文件更新api:

在网址中:

url(r'^/api/users/(?P<user_id>[0-9]+)$', UserView.as_view(), name='user_profile'),

我的观点是:

class UserView(APIView):
    def patch(self, request, user_id):
        # logging.info('user Id: %s' % user_id)
        logging.info('in patch...')
        user = User.objects.get(id=user_id)
        serializer = UserSerializer(user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_400_BAD_REQUEST)

为什么补丁def根本没有被调用?! (我不允许504方法)

我的要求是:

补丁> http://localhost:8000/api/users/2

当我在视图中删除 user_id 参数时,它可以工作,但我需要在路径中获取用户ID .

2 回答

  • 0
    def patch(self, request, user_id):
        # logging.info('user Id: %s' % user_id)
        logging.info('in patch...')
        user = User.objects.get(id=2)
        serializer = UserSerializer(instance=user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_400_BAD_REQUEST)
    

    您必须提供实例eq: serializer = UserSerializer(instance=user, data=request.data, partial=True)

  • 0

    试试这个 .

    class UserView(APIView):
        def patch(self, request, *args, **kwargs):
            # try to get user_id from kwargs.get('user_id', None)
    

相关问题