2016-06-28 91 views
0

API在我的GET请求上返回404。如何正确路由API?

这是我的API:

@permission_classes((permissions.AllowAny,)) 
class ProductInfo(APIView): 
    @staticmethod 
    def get(request): 
     product = models.Product.objects.filter(slug=request) 
     s_product = ProductSerializer(product, many=False) 
     return Response(s_product.data) 

我的路由器:

router = DefaultRouter() 
router.register(r'product', rest.ProductInfo, 'product') 

urlpatterns = router.urls 

我希望我的API接受以下格式requsests:

http://127.0.0.1:8000/api/catalog/product/slug-of-a-product/ 

,并返回序列化的数据。

我在做什么错?

回答

1

路由器期望获得视图集而不是api视图。由于这是一个经典的检索API,我建议你使用mixin。这是我将如何重建你的代码。

@permission_classes((permissions.AllowAny,)) 
class ProductInfo(RetrieveModelMixin, viewsets.GenericViewSet): 
    queryset = models.Product.objects.all() 
    lookup_field = "slug" 
    serializer_class = CitySerializer