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 и изменить не получается.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@Everything_is_bad
ну так у тебя не доходит до perform_create, попробуй в IsAdminOrReadOnly когда False получается, райзить ValidationError с code=405 или MethodNotAllowed, хотя наверно правильней бы было свой exception определить от APIException
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы