Try и except не работают в Django Rest Framework

Я написал пользовательское разрешение на основе метода http и пользователя, который запрашивает. Мне нужно использовать try и except в одном месте. Но кажется, что это не работает должным образом. Сниппет находится здесь:

class CustomPermission(BasePermission):
    """
        returns permission based on the request method and slug
    """

    def has_permission(self, request,view):
        slug = request.resolver_match.kwargs["slug"]
        print(slug)
        if slug is not None:
            if slug == "abc":
                try:
                    user = request.user
                    if user.is_staff:
                        return True
                    else:
                        print("yes object")
                        raise PermissionDenied("You need to be an admin to perform this action")                        
                except ObjectDoesNotExist:
                    print("no object")
                    raise PermissionDenied("Anonymous user")
            elif slug == "xyz":
                print("iam xyz")
                print(slug)
                return True
        else:
            print("nothing")
            return True

Проблема в том, что когда запрос имеет slug в url и это "abc", но не предоставлены учетные данные пользователя (нет токена в заголовках), то код except ObjectDoesNotExist: должен был сработать, однако, print("yes object") печатает. Он должен печатать yes object только если есть пользователь и это не персонал. Я должен получить печать ("нет объекта"), потому что нет пользователя, так как объект не существует.

Кроме того, я получаю сообщение о запрете разрешения, вместо стандартного сообщения 403 forbidden. В чем может быть проблема?

Вернуться на верх