Skip to content

Error handling

Djapy simplifies the process of handling errors in your API. Here's how easily you can do it.

Custom error response

You can also return a custom error response, by create error handlers inside djapy_ext/errorhandler.py;

from your_custom_exptions.exceptions import MessageValueError


def handle_messaged_error(request, exception: MessageValueError):
    print('Value: Handler executed: ', request)
    return 404, {
        'message': exception.message,
        'alias': exception.alias,
        'message_type': exception.message_type,
    }

Make sure your handler function name is handle_<exception_name>

And then, you can use it in your view function:

@djapify
def get_user(request, username: str) -> {200: UserSchema, 404: MessageOut}:
    user = User.objects.get(username=username)
    if user:
        return user
    else:
        raise MessageValueError('User not found', 'user_not_found', 'error')
  • If exception is raised, the handler will be executed and the response will be returned.

How-to

How to write a custom error exception

You can create your custom errors in djapy_ext/exceptions.py (recommended) or anywhere you like. Below is an example of a custom error exception:

class MessageValueError(Exception):
    def __init__(self, message: str | None = None,
                 alias="validation_error",
                 message_type="error",
                 messages: list[str] | None = None,
                 inline: dict[str, str | list[str]] | None = None):
        self.message = message
        self.messages = messages
        self.alias = alias
        self.message_type = message_type
        self.inline = inline
        super().__init__(message)