我喜欢这个:
try:
#bunch of code
except:
return HttpResponse....
Run Code Online (Sandbox Code Playgroud)
我想向客户端发送错误并在控制台上打印堆栈跟踪.我怎样才能做到这一点?
你可以做这样的事情
import traceback
from django.http import HttpReponse
def view(request):
try:
#throw exception
except:
tb = traceback.format_exc()
return HttpResponse(tb)
# normal flow
Run Code Online (Sandbox Code Playgroud)
您可以创建一个自定义中间件类,您可以在其中捕获所有异常:
class ErrorMiddleware(object):
def process_exception(self, request, exception):
# send error
return HttpResponse(...) # or None
Run Code Online (Sandbox Code Playgroud)
并将其放在MIDDLEWARE_CLASSESsettings.py 中元组的第一个位置。
来自中间件process_exception文档:
Django
process_exception()在视图引发异常时调用。process_exception()应该返回一个None或一个HttpResponse对象。如果它返回一个HttpResponse对象,将应用模板响应和响应中间件,并将结果响应返回给浏览器。否则,将启动默认异常处理。
您可能想要启用所有异常的日志记录如何在 django 站点上记录服务器错误
并制作自定义 500 django 错误页面https://docs.djangoproject.com/en/dev/topics/http/views/#the-500-server-error-view
并且您还应该在 Web 服务器级别(apache / nginx)创建 500 错误页面,以防框架无法工作。
这样您就可以“捕获”所有错误并向客户端显示一条不错的错误消息。
| 归档时间: |
|
| 查看次数: |
6063 次 |
| 最近记录: |