@ Marcell Erasmus's ответ хороший, но он не покрывает часть кода состояния (как вернуть HTTP 403 status code
)
Во-первых, вам нужно добавить Пользовательский класс исключений , как показано ниже,
from rest_framework import exceptions
from rest_framework import status
class CustomAPIException(exceptions.APIException):
status_code = status.HTTP_403_FORBIDDEN
default_code = 'error'
def __init__(self, detail, status_code=None):
self.detail = detail
if status_code is not None:
self.status_code = status_code
и используйте класс где хотите ,
if some_condition:
<b>raise CustomAPIException({"some": "data"})</b>
Одним из преимуществ этого конкретного класса является то, что вы можете вызвать исключение API с помощью пользовательских кодов состояния, указав параметр status_code
Ex.
if some_condition:
raise CustomAPIException({"some": "data"},<b>status_code=status.HTTP_409_CONFLICT</b>)