如何将主键从url传递给django中基于函数的视图?

如何将主键从url传递给django中基于函数的视图?

问题描述:

我有一个函数基于视图:如何将主键从url传递给django中基于函数的视图?

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

,我使用这个URL模式:

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

,但它不工作

观点:

@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) 

我没有收到任何错误消息。

+0

添加'views.py'和发布错误。 –

+0

你是否收到任何错误? –

+0

我没有收到任何错误消息。 – Sushil

嗨,你可以用命名组

尝试在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"), 
] 

如果您想了解更多请参考该文档Named groups