【发布时间】:2017-12-23 21:30:50
【问题描述】:
rest 框架有问题: 使用视图集和路由器构建 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)
对如何正确执行这项工作有任何想法吗?提前致谢!
【问题讨论】:
-
您的网址中的
posts之后似乎缺少/ -
哦,也许我应该试试@detail_route
-
我的意思是:
^users/posts.(?P[a-z0-9]+)/?$我认为应该是这样的:^users/posts/(?P[a-z0-9]+)/?$ -
@Cory,不,我只是使用了错误的装饰器,所以我无法获得特定用户的帖子
-
这里有一些变化:
@detail_route(),之后是def posts(self, request, pk)。现在它显示所有用户的帖子,但分页不起作用。尽管如此,路由器仍向我询问 pk(从未在代码中使用过)
标签: python django django-rest-framework