Django Rest Framework:@detail_route和@list_route同名

时间:2017-09-12 13:58:10

标签: python django django-rest-framework

我有一个DRF ViewSet,并希望提供一个详细信息并列出具有相同名称的路径:

class MyViewSet(ViewSet):
    # ...

    @detail_route(['post'])
    def do_stuff(self, request, *args, **kwargs):
        pass

    @list_route(['post'])
    def do_stuff(self, request, *args, **kwargs):
        pass

这显然不起作用,因为list_route只会覆盖detail_route

是否有一种简单的方法可以提供没有manually messing up with the urls的两条路线?

1 个答案:

答案 0 :(得分:5)

我不确定这是你在找什么,你可以为两者设置相同的url路径名:

class MyViewSet(ViewSet):
    # ...

    @detail_route(['post'], url_path='do_stuff')
    def do_stuff_detail(self, request, *args, **kwargs):
        pass

    @list_route(['post'], url_path='do_stuff')
    def do_stuff_list(self, request, *args, **kwargs):
        pass

在第一个中,网址为../"id"/do_stuff,在第二个中,.. / do_stuff