gpt4 book ai didi

python - Rest框架中的ViewSet和Router

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:12 25 4
gpt4 key购买 nike

休息框架有问题:使用 View 集和路由器构建 api。

我希望 api 通过 url 序列化用户的帖子,如下所示:/api/users/用户 ID/posts/页面,但路由器受不了。它建议我模式中的正则表达式:

^api/ ^ ^users/posts\.(?P<format>[a-z0-9]+)/?$ [name='user-posts']

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)

有什么想法如何正确地强制这项工作吗?提前致谢!

最佳答案

浏览次数:

@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)

网址:

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),
]

关于python - Rest框架中的ViewSet和Router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45176518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com