NickITDir
@NickITDir
Начинающий разработчик

Как изменить вывод статус кода?

Имеется ViewSet работающий с тегами
class TagViewSet(viewsets.ModelViewSet):
    """The viewset for working with objects of the Tag class."""

    queryset = Tag.objects.all()
    serializer_class = TagSerializer
    permission_classes = (IsAdminOrReadOnly,)

    def perform_create(self, serializer):
        if not self.request.user.is_staff:
            return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
        super().perform_create(serializer)


И имеется permissions на проверку является ли юзер админом.
class IsAdminOrReadOnly(BasePermission):
    def has_permission(self, request, view):
        if request.method in ('GET', 'HEAD', 'OPTIONS'):
            return True
        return request.user and request.user.is_staff

Теги могут просматривать все, удалять редактировать и создавать может только админ.
В случае если пытается сделать это не админ, то должен выходить статус 405 по ТЗ а у меня выходит только 403 и изменить не получается.
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
@Everything_is_bad
ну так у тебя не доходит до perform_create, попробуй в IsAdminOrReadOnly когда False получается, райзить ValidationError с code=405 или MethodNotAllowed, хотя наверно правильней бы было свой exception определить от APIException
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы