我在互联网上只发现了一些非常陈旧的文章,这些文章并不能完全解决我的问题。
我尝试过这种方法,但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}}