2017-09-24 7 views
0

J'ai une vue sur la base de fonction:Comment passer la clé primaire de l'url à la vue basée sur la fonction dans django?

@api_view(['GET', 'PUT', 'DELETE']) 
def hotel_detail(request, pk): 
    # Lots of code 

et j'utilise ce modèle d'URL:

url(r'^hotel/(?P<pk>[0-9]+)/$', api.hotel_detail) 

mais il ne fonctionne pas

Vue:

@api_view(['GET', 'PUT', 'DELETE']) 
def hotel_detail(request, pk): 
    # Retrieve, update or delete a Hotel instance. 
    try: 
     hotel = models.Hotel.objects.get(pk=pk) 
    except models.Hotel.DoesNotExist: 
     return Response(status=status.HTTP_404_NOT_FOUND) 

    if request.method == 'GET': 
     serializer = serializers.HotelSerializer(hotel) 
     return Response(serializer.data) 

    elif request.method == 'PUT': 
     serializer = serializers.HotelSerializer(hotel, data=request.data) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

    elif request.method == 'DELETE': 
     hotel.delete() 
     return Response(status=status.HTTP_204_NO_CONTENT) 

Je ne reçois aucun message d'erreur.

+0

Ajouter 'views.py' et poster l'erreur. –

+0

Avez-vous une erreur? –

+0

Je ne reçois aucun message d'erreur. – Sushil

Répondre

0

Salut, vous pouvez essayer avec Les groupes nommés

Dans votre urls.py

from django.conf.urls import url 
from . import views 
urlpatterns = [ 
     url(r'^hotel/(?P<pk>[0-9]+)/$', api.hotel_detail name="hotel_details"), 
] 

Si vous voulez en savoir plus consulter le doc Named groups