如何将渲染器连接到视图集中的特定端点,并且仅连接到该端点

kal*_*sin 5 django-rest-framework

DRF 文档展示了如何将渲染器连接到 APIView,但没有展示如何针对 ViewSet 中的特定操作执行此操作。鉴于:

class XViewSet(ViewSet):
    serializer_class = XSerializer

    @action(detail=True, methods=['get'])
    def my_action(self, request, pk=None):
         ..
Run Code Online (Sandbox Code Playgroud)

如何设置特定的渲染器my_action,使其不会影响视图集中的其他/默认操作?

当然,我可以为该操作创建一个 APIView,但这会导致 urls.py 变得更加混乱

Lin*_*via 11

据我所知,它action接受任何可以是类属性的参数:

class XViewSet(ViewSet):
    serializer_class = XSerializer

    @action(detail=True, methods=['get'], renderer_classes=[yourrenderer])
    def my_action(self, request, pk=None):
         ..
Run Code Online (Sandbox Code Playgroud)

  • 我认为文档 PR 存在于我的未来,这样其他一些可怜的灵魂就不需要依赖 SO 了:) (2认同)