Return Custom 404 Error when resource not found in Django Rest Framework
我正在学习Django REST框架,也是Django的新成员。当客户机访问未找到的资源时,我想返回JSON中的自定义
我的
1 2 3 | urlpatterns = [ url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin') ] |
其中我只有一个资源,可以通过uri访问,http://localhost:8000/mailer/
现在,当客户端访问任何其他URI(如http://localhost:8000/)时,API应该返回这样的
1 2 3 4 | { "status_code" : 404 "error" :"The resource was not found" } |
号
如果合适的话,请用适当的代码片段提出一些答案。
你在找
我的建议是:
这是如何做到的:
埃多克斯1〔2〕
1 2 3 4 5 6 7 8 | from django.http import JsonResponse def custom404(request, exception=None): return JsonResponse({ 'status_code': 404, 'error': 'The resource was not found' }) |
号
埃多克斯1〔3〕
1 2 3 4 | from project.views import custom404 handler404 = custom404 |
有关详细信息,请阅读错误处理。
Django REST框架异常也可能很有用。
根据Django文件:Django按顺序运行每个URL模式,并在第一个与请求的URL匹配的模式处停止。参考:https://docs.djangoproject.com/en/1.8/topics/http/urls/
因此,您可以在创建的URL之后在url patterns中添加另一个URL,它应该匹配所有的URL模式,并将它们发送到返回404代码的视图中。
即:
1 2 3 | urlpatterns = [ url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin'), url(r'^.*/$',views.Error404.as_view(),name='error404')] |