2016-12-05 53 views
0

我是個通過Django的創建用戶配置文件更新API: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) 

爲什麼補丁高清並不叫什麼名字? ! (我得到不允許504方法)

我的要求是:

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

當我刪除鑑於user_id的說法,它的工作原理,但我需要獲得用戶ID路徑。

+2

請顯示UserView類的簽名。 –

+0

@PrashantGaur查看更新後的問題。 – Sajad

+0

試試這個def補丁(self,request,* args,** kwargs):嘗試從kwargs.get獲取user_id。讓我知道如果仍然存在問題。請將django rest框架作爲標籤,看起來好像您正在使用DRF。 –

回答

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

這似乎並不涉及OP所具有的問題。 –

+0

@DanielRoseman查看更新後的問題。 – Sajad

0

嘗試。

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