代码之家  ›  专栏  ›  技术社区  ›  Sapnesh Naik

Django Rest框架是否可以选择性地覆盖viewset列表方法?

  •  0
  • Sapnesh Naik  · 技术社区  · 5 年前

    我正在尝试修改视图集的列表方法。

    def list(self, request):
        """Allow profile listing only for admin and super admins."""
    
        if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
            #invoke default behaviour
            pass 
        else:
            return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
    

    但如果条件通过,此代码将不起作用。

    我是Django和DRF的新手,有更好的方法吗?或者如何修复上述代码?

    1 回复  |  直到 5 年前
        1
  •  3
  •   marke    5 年前

    如果想要默认行为,则需要调用 return super().list(request, *args, **kwargs) pass .

    所以它可能看起来像这样:

    def list(self, request, *args, **kwargs):
        """Allow profile listing only for admin and super admins."""
    
        if request.user.is_authenticated and request.user.user_type == constants.Constants.ADMIN:
            #invoke default behaviour
            return super().list(request, *args, **kwargs)
        else:
            return Response(status=status.HTTP_403_FORBIDDEN)