的Django 1.7Django Rest Framework如何返回所有无效URL上未找到的细节?
DRF 3.3.2
的Python 2.7
我想,每当我输入的网址无效返回与{'detail': 'Not found'.}
404响应。
但是,只有当我输入有效的URL与无效的查找参数时,我才得到这个。
举例来说,如果我做一个GET请求:
http://127.0.0.1:8000/api/boxes/3e1659f3-9238-4b8f-a580-9b096d95bbfa/
我会得到所请求的对象。
如果我做同样的事情:
http://127.0.0.1:8000/api/boxes/3e1659f3-9238-4b8f-a580-9b096d95bbfajibbersihherelalalalalalala/
我会在身体404 {'detail': 'Not found'.}
消息。
如果我尝试这个网址同样的事情:
http://127.0.0.1:8000/api/boxesevenbiggerjibberish
我会得到一个404,此错误:
这将打破我的应用程序。
所以问题是,我如何设置我的网址,以便每个无效的网址都通过{'detail': 'Not found'.}
消息处理(这不会中断我的应用程序)。
UPDATE
给出的答案会为您的整个项目(所有AP)的自定义的404视图。
如果您想为项目内的特定应用程序设置自定义404(例如,您希望您的API返回json,但您希望应用程序返回一些自定义模板),那么您可以设置一个urlpattern以捕获一切:
的myapp/urls.py
urlpatterns = [
...,
...,
url(r'^.*/$', views.error_page, name='error_page')
]
确保网址是最后的模式(否则每个URL将调用您的自定义error_page视图)。
@BoldMarshmallow,为什么你认为'api_view'将无法正常工作? – ilse2005
我很抱歉,它确实有效。昨天出于某种原因,它破坏了我的代码,但现在我再次检查它,一切似乎都很好。我一定在其他地方犯了一个错误。 –