django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str
Posted
技术标签:
【中文标题】django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str【英文标题】:django crash: exceptions must be old-style classes or derived from BaseException, not str 【发布时间】:2018-11-21 05:57:18 【问题描述】:我有一个使用 1.9 的应用。它可以正常工作数周和数周, 然后突然出现一个刚刚工作的页面会崩溃 这个:
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py"
in get_response
174. response =
self.process_exception_by_middleware(e, request)
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py"
in get_response
172. response = response.render()
File "/usr/lib/python2.7/site-packages/django/template/response.py" in render
160. self.content = self.rendered_content
File "/usr/lib/python2.7/site-packages/django/template/response.py" in
rendered_content
137. content = template.render(context, self._request)
File "/usr/lib/python2.7/site-packages/django/template/backends/django.py"
in render
95. return self.template.render(context)
File "/usr/lib/python2.7/site-packages/django/template/base.py" in render
204. with context.bind_template(self):
File "/usr/lib64/python2.7/contextlib.py" in __enter__
17. return self.gen.next()
exceptions must be old-style classes or derived from BaseException, not str
Exception Location:
/usr/lib/python2.7/site-packages/django/utils/module_loading.py in
import_string, line 23
如果我再次访问完全相同的 URL,它将起作用。
任何人都知道可能是什么原因造成的,或者我可以如何进一步调试它?
更新:
django 代码显然有一个错误,我在我的系统上修复了它。这让我看到了下一个更高的错误,这是一个导入我自己的 context_processors 的错误。这很奇怪,因为文件和函数在那里,并且是可读的,如果不是,我总是会得到这个错误,而不仅仅是间歇性地得到它。我仍然认为还有另一个更高的错误,我试图通过设置断点并运行开发服务器来找到它,但是这个错误永远不会发生。
【问题讨论】:
像这样无用的堆栈跟踪是我对 Django 的主要抱怨之一。为什么他们不能显示导致错误的 my 代码行?显示一堆 Django 内部模块并没有帮助。 【参考方案1】:回溯可能会提供线索。具体如下行
exceptions must be old-style classes or derived from BaseException, not str
表示崩溃是由于异常定义不当造成的。
【讨论】:
是的,但这是在 django 代码中,而不是在我的代码中。那么,我如何才能找出应用程序中发生的情况,导致这种情况偶尔出现在几乎一直有效的页面上?以上是关于django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str的主要内容,如果未能解决你的问题,请参考以下文章