2016-08-17 3 views
0

私は自分のAPIに4つの異なるビューを作成しています。ただし、Django Rest Frameworkでは、1つのAPI/URLしか表示されません。Django rest framework-ビューのみを表示

私のビューの最後のプロジェクトは、常にDRFで表示されるプロジェクトです。 EG私のビューから「ProjectViewSet」を削除すると、「Location」がDRFのURLとして表示されます。 enter image description here

マイビュー

class DataViewSet(viewsets.ModelViewSet): 
    queryset = Task.objects.exlude(Q(tag=1)|Q(name=1)) 
    serializer_class = TaskSerializer 

class EventViewSet(viewsets.ModelViewSet): 
    queryset = Task.objects.exlude(Q(tag=2)|Q(name=2)) 
    serializer_class = TaskSerializer 

class LocationViewSet(viewsets.ModelViewSet): 
    queryset = Task.objects.exlude(Q(tag=3)|Q(name=3)) 
    serializer_class = TaskSerializer 

class ProjectViewSet(viewsets.ModelViewSet): 
    queryset = Task.objects.exlude(Q(tag=4)|Q(name=4)) 
    serializer_class = TaskSerializer 

(再び)私のURL:

このスクリーンショットは、情報を提供して

router = routers.DefaultRouter() 
router.register(r'Tag', TagViewSet) 
router.register(r'Info', InfoViewSet) 
router.register(r'Data', DataViewSet) 
router.register(r'Friends', FriendsViewSet) 

urlpatterns = router.urls 

urlpatterns += [ 
    url(r'^1.1/tag/', rest_views.TagView.as_view()), 
    url(r'^1.1/task/', rest_views.TaskView.as_view()), 
] 
+0

あなたのurls.pyにはありますか? 'urlpatterns = router.urls'とデバッガを入れてみましたか? –

+0

はい、touter.urlsを持っています(これを表示するために上に更新しました)。デバッグの手順を教えてください。 – Ycon

答えて

1

は解決策を見つけました。シリアライザが同じデータモデルを共有するため、DRFはURL命名パターンを自動的に発見しようとしているようです。

各モデルにbase_name引数を付けると、問題が解決しました。

router.register(r'Data', DataViewSet, base_name='Data') 
router.register(r'Friends', FriendsViewSet, base_name='Friends') 
関連する問題