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. В чем может быть проблема?