django-rest-framework中list_route和detail_route的不同之处是什么?

nat*_*ila 9 django-rest-framework

如标题,
什么是关于不同list_routedetail_routeDjango中休息的框架?
如果我想获得1的URL xxx/books/1/,
我怎么能写url.pyviews.py

小智 10

@list_route并且@detail_route是我们可以添加到a的额外操作ViewSet.两者都在视图集中提供自定义路由工具.ViewSet装饰上的任何方法@detail_route@list_route也将被路由.list_route将提供所有相关记录,而detail_route只提供特定记录.例如,在UserViewSet类上给出类似这样的方法:

class UserViewSet(ModelViewSet):
    ...

    @detail_route(methods=['post'], permission_classes=[IsAdminOrIsSelf])
    def set_password(self, request, pk=None):
Run Code Online (Sandbox Code Playgroud)

此外还会生成以下URL模式:

URL pattern: ^users/{pk}/set_password/$ Name: 'user-set-password'
Run Code Online (Sandbox Code Playgroud)

有关路由器的更多信息,您可以访问有关路由器的官方Django Rest Rramewrok文档.

如果你想拿到xxx/books/1/那么你的url.pyviews.py应该是这样的.

urls.py:

url(r'^xxx/books/(?P<id>[0-9]+)$', views.myview)
Run Code Online (Sandbox Code Playgroud)

views.py:

@csrf_exempt
def myview(request , id):
Run Code Online (Sandbox Code Playgroud)