首页 > 解决方案 > 视图集中的 Django Rest Framework 嵌套视图

问题描述

class GameInviteViewSet():
    queryset = Game.objects.all()
    serializer_class = GameSerializer

    @action(
        methods=['get'],
        detail=True,
    )
    def invite(self, request, **id):
        # Invite user here with endpoint /api/games/{id}/invite/{user}

我将如何制作上述端点?我可以 make /api/games/{id}/invite/,但是在那之后我怎么能添加另一个参数。

或者,根据文档,默认情况下它会

{prefix}/{lookup}/{url_path}/   

我想

{prefix}/{lookup}/{url_path}/{prefix2}/{lookup2}/{url_path2}/   

或者

{prefix}/{lookup}/{url_path}/{lookup2}/{url_path2}/

这样我就可以做类似的事情

games/{id}/{invite}/{user}/
games/{id}/{kick}/{user}/
games/{id}/{players}/{user}/gamestats/

要注册我的路由器,我执行以下操作:

games/urls.py

router = routers.DefaultRouter()
router.register(r'^api/games', GameViewSet, 'games')

api/urls.py: 从 games.urls 导入路由器作为游戏

router = routers.SimpleRouter()
urlpatterns += games.urls

标签: pythondjangorestapidjango-rest-framework

解决方案


DRF 嵌套路由器是一个模块,可让您在 Django Rest 框架中定义嵌套资源。

它有超过 700 个 GitHub 星,并在官方文档中提到


推荐阅读