如果您还想获得适当的回溯和消息。然后我会建议使用自定义中间件并将其添加到最后的 settings.py 中间件部分。
以下代码将仅在生产中处理异常。如果您愿意,可以删除 DEBUG 条件。
from django.http import HttpResponse
from django.conf import settings
import traceback
class ErrorHandlerMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_exception(self, request, exception):
if not settings.DEBUG:
if exception:
message = "{url}\n{error}\n{tb}".format(
url=request.build_absolute_uri(),
error=repr(exception),
tb=traceback.format_exc()
)
# Do whatever with the message now
return HttpResponse("Error processing the request.", status=500)