Как вернуть 404 и 500 ошибки в формате json вместо стандартных html-страниц в Django 4.x

В Интернете я нашел только очень несвежие статьи, которые не совсем решают мою проблему.

Я пробовал этот способ, но Django по-прежнему возвращает html-страницы:

exceptions.py

def custom_exception_handler(exc, context):
    response = exception_handler(exc, context)

    if response is not None:
        if response.status_code == 500:
            response.data = {"code": 500, "message": "Internal server error"}
        if response.status_code == 404:
            response.data = {"code": 404, "message": "The requested resource was not found on this server"}
    return response

settings.py

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'backend.exceptions.custom_exception_handler',
}

Я думаю, что вы просто переопределите шаблоны по умолчанию...

Я переопределил их с помощью этого в view.py:

def handler404(request, exception):
    return render(request, 'custom_404.html', status=404)
def handler500(request):
    return render(request, 'custom_500.html', status=500)

Это просто волшебным образом работает, я действительно не могу сказать вам, как он знает направить 500 к моему обработчику... он не определен в другом месте в проекте

и затем для шаблона, custom_505.html, будет выглядеть примерно так:

{{data}}
Вернуться на верх