【问题标题】:Intercept all exceptions from a certain app in Django/DRF拦截 Django/DRF 中某个应用程序的所有异常
【发布时间】:2020-07-31 14:44:28
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    我认为您非常清楚抑制所有异常本身就是不好的做法,但是,考虑到您的情况,也许您可​​以在 API 中尝试类似 serializer.is_valid(raise_exception=False) 的操作

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多