如何在Django 4.x中以json格式而不是标准html页面返回404和500错误



我在互联网上只发现了一些非常陈旧的文章,这些文章并不能完全解决我的问题。

我尝试过这种方法,但Django仍然返回html页面:

exceptions.py

def custom_exception_handler(exc, context):
response = exception_handler(exc, context)
if response is not None:
if response.status_code == 500:
response.data = {"code": 500, "message": "Internal server error"}
if response.status_code == 404:
response.data = {"code": 404, "message": "The requested resource was not found on this server"}
return response

settings.py

REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'backend.exceptions.custom_exception_handler',
}

我认为您应该覆盖默认模板。。

我已经在视图中使用这个覆盖了它们。py:

def handler404(request, exception):
return render(request, 'custom_404.html', status=404)
def handler500(request):
return render(request, 'custom_500.html', status=500)

这似乎很神奇,我真的无法告诉你它是如何知道将500指向我的处理程序的。。在项目的其他地方没有定义

然后对于模板custom_505.html,它看起来像:

{{data}}

最新更新