【发布时间】:2018-11-20 08:42:12
【问题描述】:
在使用 Django REST Framework 时,documentation 提到 Http404 异常被 DRF 拦截和处理。然而,当我在实践中尝试这个时,我仍然从 Django 中得到一个 HTML 响应:
$ 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。
【问题讨论】:
-
你能显示各自的
view吗? -
@JerinPeterGeorge 没有相应的视图,因此是 404。
-
是的,您不会获得 JSON 或 XML 文件作为 HTTP 404 的响应。您也不需要它。实际上,您甚至不需要 HTML 文件。您唯一真正需要的是 HTTP 标头。在您的客户端中,您只需检查 HTTP 状态代码。如果是200就可以继续,否则就得处理异常了。
-
@cezar 很好,但我仍然很好奇为什么文档说 DRF 拦截了
Http404异常。按照这个逻辑,404s 也应该变成 JSON 格式的错误,不是吗?
标签: django django-rest-framework