如何正确路由API?

时间:2016-06-28 13:22:38

标签: django django-rest-framework

API在我的GET请求中返回404。

这是我的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能够接受以下格式的请求:

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

并返回序列化数据。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

路由器希望获得视图集而不是api视图。由于这是一个经典的检索api,我建议你使用mixin。这就是我重建代码的方式。

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