Django REST Framework не перехватывает 404 исключения и выводит HTML вместо JSON - PullRequest
0 голосов
/ 11 июня 2018

При использовании Django REST Framework в документации упоминается, что исключение Http404 перехватывается и обрабатывается DRF.Однако, когда я пытаюсь сделать это на практике, я все еще получаю ответ HTML от Django:

$ curl http://127.0.0.1:8000/foo
<h1>Not Found</h1><p>The requested URL /foo was not found on this server.</p>

Любопытно, что исключения, не разрешенные методом, перехватываются и корректно превращаются в JSON.Почему он не работает в течение 404 секунд?

Редактировать: Добавление -H 'Accept: application/json' также не имеет никакого эффекта;тот же HTML все еще обслуживается.

1 Ответ

0 голосов
/ 11 июня 2018

Я думаю, что это простая логика, что исключение Method Not Allowed связано с view, который определяется с помощью DRF.Это означает, что исключение возникает при достижении запроса в некотором представлении (DRF-View).

Исключение Page Not Found возрастает до URL Dispatcher, если входной URL не соответствует определенным URL и, следовательно, вызывает 404 (страница не найдена) просмотр .Кроме того, DRF обрабатывает HTTP 404 Not Found, когда мы пытаемся получить сведения об экземпляре (api/some_endpoint/instance_id/), и он не найден в БД

Ссылка: Представление 404 (страница не найдена)

...