我正在从另一个应用程序中调用 Django。
调试时,如果发生 Django 异常,则会提取 (html) 响应正文,然后将其包装在调用应用程序中生成的异常中。
这使得确定问题所在非常痛苦,因为我需要遍历 CSS、Html、Js 等。
有什么方法可以让 Django 仅将异常消息和堆栈跟踪作为纯文本输出?
您可以编写自己的异常处理中间件类。请参阅process_exception
中间件方法的文档:
process_exception(self, request, exception)
request
是一个HttpRequest
对象。exception
是Exception
视图函数引发的对象。
process_exception()
当视图引发异常时Django 调用。process_exception()
应该返回一个None
或一个HttpResponse
对象。如果它返回一个HttpResponse
对象,则响应将返回给浏览器。否则,将启动默认异常处理。
所以我认为你需要写这样的东西:
import traceback
from django.http import HttpResponse
class PlainTextExceptionMiddleware(object):
def process_exception(self, request, exception):
return HttpResponse(traceback.format_exc(), "text/plain")
然后将课程添加到您的MIDDLEWARE_CLASSES
设置中。
只需DEBUG_PROPAGATE_EXCEPTIONS
在您的设置中设置:
If set to True, Django’s normal exception handling of view functions
will be suppressed, and exceptions will propagate upwards. This
can be useful for some test setups, and should never be used on a live site.