禁用Django异常格式

时间:2013-04-09 10:06:14

标签: python django exception

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

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

这使我很难确定问题是什么,因为我需要通过CSS,Html,Js等进行研究。

有没有办法让Django只输出异常消息和堆栈跟踪作为纯文本?

enter image description here

2 个答案:

答案 0 :(得分:2)

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

  

process_exception(self, request, exception)

     

requestHttpRequest个对象。 exception是视图函数引发的Exception对象。

     

当视图引发异常时,Django会调用process_exception()process_exception()应返回NoneHttpResponse个对象。如果它返回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