首页 > 解决方案 > 拦截 Django/DRF 中某个应用程序的所有异常

问题描述

例如,有一个主应用程序,假设用户处理和辅助应用程序,我将在其中创建日志、模型更改历史记录、统计信息等。通常,主要应用程序中的大多数 CRUD 活动都会通过信号在辅助应用程序中创建操作以创建日志和内容。

我想要实现的是避免辅助应用程序引发的异常通过 DRF 响应传播并显示给用户,或者以某种方式使它们“静默失败”,例如,用户随后会更新他的帐户和历史日志在辅助模型中创建会引发完整性错误 - 最好继续并且什么都不做,而不是通知用户。

有主要类型的异常 - IntegrityError 和 ValidationError。

我可以尝试尝试/排除所有验证错误,如果我知道约束名称,我可能会使用自定义异常处理程序来拦截完整性错误,但是 a)我仍然无法全部拦截它们,因为其中一些来自 Django 源代码 2)很多的硬编码。

问题是——是否有可能以某种方式拦截来自某个应用程序的所有异常并将它们全部抑制?

谢谢你。

标签: djangodjango-rest-framework

解决方案


我想你很清楚,抑制所有异常本身就是不好的做法,但是,考虑到你的情况,也许你可以serializer.is_valid(raise_exception=False)在你的 API中尝试这样的事情


推荐阅读