2017-07-18 8 views
0

残りのフレームワークで問題が発生しました。 ビューセットとルータでapiを構築しています。 休憩フレームワーク内のビューセットとルータ

は、私は、APIがそのようなURLでユーザーの投稿をシリアル化したい: /API /ユーザー/ ユーザーID /ポスト/ ページ、 が、ルータがそれを立つcan`t。 それはパターンで私にその正規表現を示唆:(?P [-Z0-9] +)?

^API/^ ^ユーザ/ポスト/ $ [名= 'ユーザーの投稿']

class UserViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

    @list_route() 
    def posts(self, page): 
     user = self.get_object() 
     post_set = Post.objects.filter(owner=user) 
     paginator = Paginator(post_set, 16) 
     serializer = PostSerializer(paginator.page(page), many=True) 
     return Response(serializer.data) 

この作品を正しく強制する方法はありますか?前もって感謝します!

+0

あなたは '/' '後posts'内の欠落しているように見えますあなたのURL –

+0

ああ、たぶん私はshoudを試して@detail_route – Michael

+0

平均'^ users/posts /(?P [a-z0-9] +)/?$'これは次のようになります: '^ users/posts /(?P [a-z0-9] +) /?$ ' –

答えて

0

ビュー:

@detail_route() 
def posts(self, request, pk, page): 
    user = self.get_object() 
    post_set = Post.objects.filter(owner=user) 
    paginator = Paginator(post_set, 16) 
    serializer = PostSerializer(paginator.page(page), many=True, context={'request': request}) 
    return Response(serializer.data) 

のURL:

router = DefaultRouter() 
router.register(r'posts', views.PostViewSet) 
router.register(r'users', views.UserViewSet) 
user_posts = views.UserViewSet.as_view({ 
    'get': 'posts' 
}) 

urlpatterns = [ 
    url(r'^', include(router.urls)), 
    url(r'^users/(?P<pk>\w+)/posts/(?P<page>[0-9]+)', user_posts), 
] 
0
class UserViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

    @detail_route() 
    def posts(self, request, pk): 
     user = self.get_object() 
     post_set = Post.objects.filter(owner=user) 
     paginator = Paginator(post_set, 16) 
     page= request.query_params.get('page', 1) 
     serializer = PostSerializer(paginator.page(page), many=True, context={'request': request}) 
     return Response(serializer.data) 

urls.py

router.register('user', UserViewSet) 
関連する問題