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

Как можно обеспечить вывод статуса 405, когда неадминистратор пытается удалять, изменять или создавать теги через ViewSet?
  • 24 декабря 2023 г. 20:07
Ответы на вопрос 2
Чтобы изменить код состояния (статус код) вывода во фреймворке Django REST Framework, вы можете использовать исключения. В случае, когда неадминистратор пытается удалять, изменять или создавать теги через ViewSet, вы можете вызвать исключение `MethodNotAllowed` с кодом состояния 405.

Вот пример того, как это можно сделать:

```python
from rest_framework.exceptions import MethodNotAllowed

class TagViewSet(viewsets.ModelViewSet):
    # ваш код ViewSet

    def destroy(self, request, *args, **kwargs):
        if not request.user.is_superuser:
            # если пользователь не является администратором,
            # вызывается исключение MethodNotAllowed с кодом состояния 405
            raise MethodNotAllowed(request.method)

        # ваш код удаления тега
```

Таким образом, при попытке неадминистратора удалить, изменить или создать теги будет вызвано исключение `MethodNotAllowed` с кодом состояния 405 и сообщением "Method 'DELETE' not allowed." (Метод 'DELETE' не разрешен).
ну так у тебя не доходит до perform_create, попробуй в IsAdminOrReadOnly когда False получается, райзить ValidationError с code=405 или MethodNotAllowed, хотя наверно правильней бы было свой exception определить от APIException
Похожие вопросы