在我的Django项目上进行开发时,我遇到了一个说:
的DatabaseError当前事务被中止,命令被忽略直到结束 交易块
我知道发生这种情况是因为没有回滚的PostgreSQL事务很糟糕,并且可以在PostgreSQL错误日志中找到此错误事务中的错误。但是,如果在Django错误页面上显示此错误,我认为会更方便。然后你可以直接看到问题所在。
那么,是否有可能在Django错误页面上获得这些PostgreSQL错误?如果是这样,怎么样?
答案 0 :(得分:2)
如果您想了解异常的详细信息,那么您可以编写自定义middleware class来包装视图处理并捕获未处理的django.db.DatabaseError
并检查异常来自开发服务器控制台的调试会话:
from django.db import DatabaseError
class DatabaseErrorMiddleware(object):
def process_view(self, request, view, args, kwargs):
try:
view(request, *args, **kwargs)
except DatabaseError as err:
import pdb; pdb.set_trace()
# You can now fully inspect the `e` exception object and it's context
这些异常是良性的,通常在线程的请求 - 响应流程过早结束时发生,通常在开发期间,如果客户端在应用程序返回响应之前中止连接,那么这可能不是全部。