我正在使用Django Rest框架的默认路由器,并尝试自定义我的链接。
如何设置如下安排:
/myModels/dosomething
(并在API根视图中列出它)/myModels/addModel?name=abc&address=xyz
视图.py
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
url.py
router = routers.DefaultRouter(trailing_slash=True)
router.register(r'mymodels', views.MyModelViewSet)
让我演示如何使用
ViewSet
和router
:根据defaultrouter,您的视图集需要声明类中的视图。
我给出了一个关于用户api的示例,并指导您如下:
当我完成包含基本restful api的UserViewSet时,我在
router
中注册:因此将生成相应的url:
list
和create
具有相应的url:/users
retrieve
、partial_update
和destroy
具有相应的url:/users/<email>
假设需要添加更多自定义URL,则应使用
list_route
或detail_route
来展开视图集:因此,新操作具有相应的url:
login
具有相应的url:/users/login
我希望它能帮助你。
通过对视图使用
@detail_route
或@list_route
装饰符,可以向默认路由器添加更多端点。@list_route
将在/myModel/new-route/
上创建新端点,而@detail_route
将在/myModel/<id-of-model>/new-route/
上创建新端点但是,如果你想完全替换默认路由器提供的端点,你应该考虑编写一个自定义路由器。
DRF's documentation对自定义路由器以及示例自定义路由器有很好的解释,例如there。
相关问题 更多 >
编程相关推荐