如何用DRF配置类似于“GET /zoos/ID/animals:列出某个指定动物园的所有动物”的URL?

来源:5-8 viewsets和router完成商品列表页

mmm拇

2017-09-20

看了老师课件提到的一个关于restful api的文章里边提到restful api介绍,里边有说道用“GET /zoos/ID/animals:列出某个指定动物园的所有动物”

那么DRF中的router是否存在类似的功能方便我们快速的去生成类似这样的URL呢?如果没有的话,有什么建议吗?

写回答

1回答

mmm拇

提问者

2017-09-20

看了一下文档可以用@detail_route的方式进行嵌套,但是只能进行到"/zoos/ID/animals"而不能进行动物详情的查询(就是"/zoos/ID/animals/ID")

class SchoolListViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    """
    测试用啦啦啦啦啦
    """
    queryset = School.objects.all()
    serializer_class = SchoolSerializer

    @detail_route(methods=['get'], url_path='coaches')
    def coach_list(self, request, pk=None):
        self.queryset = Coach.objects.filter(is_active=True, school_id=pk)
        self.pagination_class = BasePagination
        self.serializer_class = CoachesSerializer
        self.filter_backends = (
            DjangoFilterBackend,
            filters.SearchFilter,
            # filters.OrderingFilter,  # 排序逻辑先放着
        )
        self.filter_class = CoachFilter
        self.search_fields = ('name',)
        return super(SchoolListViewSet, self).list(self, request)

上边这样设置后可以通过 "/schools/ID/coaches" 来获取学校下边的所有教练

那问题来了,哈哈哈哈如果 想做成 "/zoos/ID/animals/ID" 类似形式的话,有法子吗?

0
1
bobby
后面小节中 讲到缓存中会介绍到一个第三方库 那个库支持 nest url的配置
2017-09-21
共1条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2873 学习 · 2457 问题

查看课程