python - 在 Django Rest Framework 中找不到资源时返回自定义 404 错误

标签 python django rest django-rest-framework

我在学习Django Rest Framework ,也是 django 的新手。当客户端访问未找到的资源时,我想在 json 中返回自定义 404 错误。

我的 urls.py 看起来像这样:

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"
}

如果合适,请使用适当的代码片段建议一些答案。

最佳答案

您正在寻找handler404 .

这是我的建议:

  1. 创建一个 View ,如果所有 URL 模式都不匹配,则应调用该 View 。
  2. handler404 = path.to.your.view 添加到您的根 URLconf。

这是它是如何完成的:

  1. project.views

    from django.http import JsonResponse
    
    
    def custom404(request, exception=None):
        return JsonResponse({
            'status_code': 404,
            'error': 'The resource was not found'
        })
    
  2. project.urls

    from project.views import custom404
    
    
    handler404 = custom404
    

阅读error handling了解更多详情。

Django REST framework exceptions也可能有用。

关于python - 在 Django Rest Framework 中找不到资源时返回自定义 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380280/

相关文章:

javascript - 在 yii 中创建跨域通信的 API

rest - Cloudant 批量创建(或更新)的最大大小?

python - 请帮我将以下 lambda 翻译成人类语言

python - 如何设置 PyQt5 QIntValidator 的顶部和底部?

Python Selenium 打印另存为 PDF 等待文件名输入

django - Pytest 和覆盖率 : why do coverage results vary with directory structure?

python - 如何使用外部字段序列化查询集?

python - 关闭 django mysql 连接

Django Rest Framework - 阻止访问 API?

python - 当键与多个值关联时,在 python 中查找值的键