2015-11-06 118 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