2015-11-06 121 views
5

我无法注册APIView我的网址路线。从意见Django休息框架APIView注册路线

代码:从URL中

class PayOrderViewSet(APIView): 
    queryset = PayOrder.objects.all() 

代码:

router = routers.DefaultRouter() 
router.register(r'document/payorder', PayOrderViewSet) 

这个新建立的网址不存在的。

这是什么解决方案?

+0

添加结尾斜线在浏览器的URL的末尾,看看它是否工作。 – Cheng

+0

还是一样,找不到:/ –

+0

你可以发布你的urls.py吗? – Cheng

回答

3

路由器不会与APIView一起使用。他们只与ViewSets及其派生物一起工作。

你可能想:

class PayOrderViewSet(ModelViewSet): 
+0

“路由器不能使用API​​View”任何引用? – nehemiah

+1

无需引用。 'Routers'预计由'Viewset'提供的API /数据,但不能用于'APIView'。 – Linovia

5

路由器和APIViews(通用或其他方式)是两种不同的方法来创建API端点。路由器只能使用视图集。

在您的代码中,您虽然试图为您的代码正在扩展APIView类的路由器创建视图集。

您的问题将由@linovia在其asnwer中建议的内容处理。我会建议理解这两者之间的区别是个好主意。

GenericViewSet继承自GenericAPIView,但不提供任何基本动作的实现。只有get_object,get_queryset。

ModelViewSet继承自GenericAPIView并包含各种操作的实现。换句话说,你不需要实现基本的动作列表,检索,创建,更新或销毁。当然你可以重写它们并实现你自己的列表或你自己的创建方法。

了解更多关于viewsetsGeneric Class Based APIViews