Возврат пользовательской ошибки 404, когда ресурс не найден в Django Rest Framework
Я учусь Django Rest Framework, а также новый для django. Я хочу вернуть custom 404
ошибка в json, когда клиент получит доступ к ресурсу, который не был найден.
мой urls.py
выглядит liks это:
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin')
]
в котором у меня есть только один ресурс, к которому можно получить доступ через URI,http://localhost:8000/mailer/
теперь, когда клиент получает доступ к любому другому URI, как http://localhost:8000/, API должен возвращать 404-Not Found
ошибка такая:
{
"status_code" : 404
"error" : "The resource was not found"
}
пожалуйста, предложите некоторый ответ с соответствующими фрагментами кода, если это подходит.
2 ответов
вы ищете handler404
.
вот мое предложение:
- создайте представление, которое должно вызываться, если ни один из шаблонов URL не совпадает.
- добавить
handler404 = path.to.your.view
к вашему корневому URLconf.
вот как это делается:
-
project.views
from django.http import JsonResponse def custom404(request): return JsonResponse({ 'status_code': 404, 'error': 'The resource was not found' })
-
project.urls
from project.views import custom404 handler404 = custom404
читать обработка ошибок дополнительные подробности.
Django Rest framework исключения может быть полезно, а также.
согласно документации django : Django проходит через каждый шаблон URL-адреса по порядку и останавливается на первом, который соответствует запрошенному URL-адресу. ref:https://docs.djangoproject.com/en/1.8/topics/http/urls/
таким образом, вы можете просто добавить еще один url в urlpatterns после того, как вы создали, и он должен соответствовать всем шаблонам url и отправлять их в представление, которое возвращает код 404.
Я.е :
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin'),
url(r'^.*/$',views.Error404.as_view(),name='error404')]