当用户输入错误的URL时,Django应用程序会返回HTML错误。如何让DRF返回JSON格式的错误?
目前我的网址是
from django.conf.urls import url
from snippets import views
urlpatterns = [
url(r'^snippets/$', views.snippet_list),
url(r'^snippets/(?P<pk>[0-9]+)/$', views.snippet_detail),
]
但是如果用户访问 www.example.com 他们得到的是html格式错误,而不是json格式错误。
4条答案
按热度按时间9jyewag01#
简单地说,你可以使用
raise Http404
,这里是你的views.py
你也可以用
Response(status=status.HTTP_404_NOT_FOUND)
来处理它,下面的答案是如何处理它:https://stackoverflow.com/a/24420524/6396981但是之前,在您的
serializer.py
为了测试它,一个例子使用
curl
命令;希望能有所帮助。.
更新
如果你想用DRF处理所有错误404 URL,DRF也提供了
APIException
,这个答案可能会对你有所帮助;https://stackoverflow.com/a/30628065/6396981我将给予一个例子说明如何使用它;
1.
views.py
2.
urls.py
制作您的
DEBUG = False
gstyhher2#
7jmck4yq3#
更简单的方法是在django中使用
get_object_or_404
方法:如本链接所述:
get_object_or_404(klass,*args,kwargs)
- 在给定的模型管理器上调用get(),但它引发Http 404而不是模型的DoesNotExist异常。
- klass:获取对象的Model类、Manager或QuerySet示例。
举个例子,注意
在下面的代码中:
mklgxw1f4#
或者简单地说,您可以使用相同的DRF结构,而不会丢失I18N并保持相同的DRF错误消息: