Ger*_*kai 5 django-rest-framework
I\xe2\x80\x99d 喜欢创建一个渲染当前用户数据的详细路由。
\n\n如果我使用自定义路由器:
\n\nclass CustomRouter(routers.DefaultRouter):\n def __init__(self, *args, **kwargs):\n super(CustomRouter, self).__init__(*args, **kwargs)\n\n self.routes.append(\n routers.Route(url=r'^{prefix}/current{trailing_slash}',\n mapping={'get': 'current'},\n name='{basename}-current',\n initkwargs={'suffix': 'Detail'}))\n\n\nrest_router = CustomRouter()\nurlpatterns = [\n url(r'^', include(rest_router.urls)),\n]\nRun Code Online (Sandbox Code Playgroud)\n\n它有效,我可以访问我的登录用户/api/users/current/。
但是,如果我使用 myCustomUser并注册 my 整体UserViewSet(来自viewsets.ReadOnlyModelViewSet):
rest_router.register(r'users', viewsets.UserViewSet)\nRun Code Online (Sandbox Code Playgroud)\n\n我的current/路线停止工作。有没有办法添加这样一个不需要 pk 的自定义详细路由?
编辑:我的第二种方法是添加一个@list_route实际上只返回一个对象而不是一个对象的对象。这根本不需要自定义路由器,只是我的一个额外方法UserViewSet:
class UserViewSet(viewsets.ReadOnlyModelViewSet):\n \xe2\x80\xa6\n @list_route(methods=['get'])\n def current(self, request):\n return Response(self.serializer_class(request.user).data)\nRun Code Online (Sandbox Code Playgroud)\n\n然而,由于显而易见的原因,这非常丑陋:为什么我会在列表路由中返回一个对象?
\n| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |