DRF json 404 intmlad html page

时间:2018-02-16 22:48:45

标签: python django django-rest-framework django-rest-viewsets

我想用DRF响应替换默认的django 404(以及将来的其他版本),尽可能简单地返回(标准DRF响应):

{
    "detail": "Not found."
}

所以我把这段代码放在我的url.py文件中。

from rest_framework.exceptions import NotFound
from django.conf.urls import handler404
handler404 = NotFound

当我设置Debug标志时(在设置Ture我正在设置500,当设置为False 404但是在html表单中。

我在这里阅读了文档:http://www.django-rest-framework.org/api-guide/exceptions/但说实话我不知道如何将其变为现实。

它似乎很容易,但不知怎的,我没有实现这个(上面的代码来自其他SO线程)。

提前谢谢

1 个答案:

答案 0 :(得分:0)

您应该为404创建自定义视图然后使用它。 例如:

views.py中的

from django.http import HttpResponseNotFound
import json

def error404(request, exception):
    response_data = {}
    response_data['detail'] = 'Not found.'
    return HttpResponseNotFound(json.dumps(response_data), content_type="application/json")

然后在urls.py

from django.conf.urls import handler404

from yourapp.views import error404

handler404 = error404