【发布时间】:2011-06-24 10:55:03
【问题描述】:
我在 Django 中创建了我自己的中间件类,直到最近它还运行良好。奇怪的是 process_request 仍然被调用得很好,但是即使响应是 500 - internal server error,process_exception 也根本没有被调用。为什么?
将我的中间件类声明为设置文件中已安装中间件列表中的第一个或最后一个条目没有区别。
谢谢, 戴夫
【问题讨论】:
-
会不会,process_exception 本身会引发异常?
-
将
import pdb;pdb.set_trace()放在process_exception方法的开头,然后启动runserver 并导致500 错误。如果 runserver 进入 pdb 会话,则肯定会调用您的方法。然后,逐步查看会发生什么。 -
我遇到了同样的问题。我想向异常电子邮件添加详细信息。我从stackoverflow.com/questions/6678895/… 找到了解决方案。我实现了并且 process_exception() 似乎没有运行。我添加了一个 process_request() 方法并附加了 request.META['MYVAR'] = "funky" 并包含在电子邮件中,但我似乎无法让 process_exception() 触发。我还在 MIDDLEWARE_CLASSES 设置中尝试了不同的位置(第一个和最后一个)。
-
我尝试排除中间件类,直到将其缩小到 AuthenticationMiddle 类。当排除那个时,我的 process_exception() 运行,但如果启用它,我的不会运行,标准的会运行。
-
@Justin Poliey 这个问题已经快一年了,我无法快速访问可以让我验证解决方案的代码。我有责任为要奖励的赏金选择答案吗?
标签: django middleware django-middleware