1

我正在从另一个应用程序中调用 Django。

调试时,如果发生 Django 异常,则会提取 (html) 响应正文,然后将其包装在调用应用程序中生成的异常中。

这使得确定问题所在非常痛苦,因为我需要遍历 CSS、Html、Js 等。

有什么方法可以让 Django 仅将异常消息和堆栈跟踪作为纯文本输出?

在此处输入图像描述

4

2 回答 2

2

您可以编写自己的异常处理中间件类。请参阅process_exception中间件方法的文档:

process_exception(self, request, exception)

request是一个HttpRequest对象。exceptionException视图函数引发的对象。

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设置中。

于 2013-04-09T11:05:37.310 回答
1

只需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.

查看Django 文档

于 2013-04-09T10:42:28.480 回答