2016-12-05 5 views
0

I ma création d'un profil utilisateur mise à jour api via django:Django mise à jour api

dans urls:

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

Et moi:

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) 

pourquoi Patch def pas appelé du tout? ! (Je reçois 504 Méthode non autorisée)

ma demande est:

Patch>http://localhost:8000/api/users/2

Lorsque je supprime l'argument user_id en vue, cela fonctionne, mais je dois obtenir l'ID utilisateur dans chemin.

+2

S'il vous plaît montrer la signature de la classe UserView. –

+0

@PrashantGaur Voir la question mise à jour. – Sajad

+0

essayez ce patch de modification (self, request, * args, ** kwargs): essayez d'obtenir user_id de kwargs.get. faites-moi savoir si un problème persiste. S'il vous plaît django reste cadre comme une balise, il semble que vous utilisez DRF. –

Répondre

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) 

Vous devez fournir par exemple eq: serializer = UserSerializer(instance=user, data=request.data, partial=True)

+0

Cela ne semble pas être lié au problème que rencontre le PO. –

+0

@DanielRoseman Voir la question mise à jour. – Sajad

0

essayer.

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