2017-08-29 25 views
0

我想知道如何使用DRF添加自定義視圖和網址。DRF的自定義視圖和URL

我現在有一個UserDetail(APIView)類,可以使用URL像/users/123/顯示用戶對象,但我想也有查看用戶的歷史與URL像/users/123/history/這將在中新的方法可能調用的能力類UserDetail。有沒有辦法做到這一點?

我試過翻閱DRFs文檔,看起來他們可以通過ViewSets和自定義路由器來實現這一點,但是當使用ViewSets時,我會遇到需要定義queryset的錯誤。

+0

這是你在找什麼? http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing –

+0

實際上,這確實有效,但我必須在' urls.py'文件如: url(r'^ users /(?P [0-9] + | me)/ $',UserDetail.as_view({'get':'get',}))), (''用戶/(?P [0-9] + |我)/歷史/ $',UserDetail.as_view({'get':'history',})) 有沒有辦法這樣做,而不會臃腫的urls文件? –

回答

0
from rest_framework.viewsets import ModelViewSet 
from rest_framework.permissions import IsAuthenticated 
from rest_framework.response import Response 

class UserDetail(ModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserCreateSerializer 
    permission_classes = (IsAuthenticated,) 

    @detail_route(methods=['GET']) 
    def history(self, request, pk): 
     user= self.get_object() 
     serializer = UserCreateSerializer(user) 
     return Response(serializer.data)