我在另一个应用程序中调用Django。
在调试时,如果发生Django异常,则会拾取(html)响应正文,然后将其包含在调用应用程序中生成的异常中。
这使我很难确定问题是什么,因为我需要通过CSS,Html,Js等进行研究。
有没有办法让Django只输出异常消息和堆栈跟踪作为纯文本?
答案 0 :(得分:2)
您可以编写自己的异常处理中间件类。请参阅process_exception
middleware method的文档:
process_exception(self, request, exception)
request
是HttpRequest
个对象。exception
是视图函数引发的Exception
对象。当视图引发异常时,Django会调用
process_exception()
。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
设置。
答案 1 :(得分: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 docs