Aks*_*ngh 10 python django rest django-rest-framework
我正在学习Django Rest Framework,也是django的新手.我想404在客户端访问未找到的资源时在json中返回自定义错误.
我urls.py看起来很喜欢这个:
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin')
]
Run Code Online (Sandbox Code Playgroud)
其中我只有一个资源,可以通过URI访问,http:// localhost:8000/mailer /
现在,当客户端访问任何其他URI,如http:// localhost:8000 /时,API应该返回如下404-Not Found错误:
{
"status_code" : 404
"error" : "The resource was not found"
}
Run Code Online (Sandbox Code Playgroud)
如果合适,请使用正确的代码段建议一些答案.
Ern*_*Ten 15
你在找handler404.
这是我的建议:
handler404 = path.to.your.view到您的根URLconf.以下是它的完成方式:
project.views
from django.http import JsonResponse
def custom404(request, exception=None):
return JsonResponse({
'status_code': 404,
'error': 'The resource was not found'
})
Run Code Online (Sandbox Code Playgroud)project.urls
from project.views import custom404
handler404 = custom404
Run Code Online (Sandbox Code Playgroud)阅读错误处理了解更多详情.
Django REST框架异常也可能很有用.
小智 6
根据 django 文档:Django 按顺序运行每个 URL 模式,并在与请求的 URL 匹配的第一个模式处停止。参考:https : //docs.djangoproject.com/en/1.8/topics/http/urls/
所以你可以在你创建的 urlpatterns 之后添加另一个 url,它应该匹配所有 url 模式并将它们发送到返回 404 代码的视图。
IE :
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin'),
url(r'^.*/$',views.Error404.as_view(),name='error404')]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5714 次 |
| 最近记录: |