django - 拦截 Django/DRF 中某个应用程序的所有异常
问题描述
例如,有一个主应用程序,假设用户处理和辅助应用程序,我将在其中创建日志、模型更改历史记录、统计信息等。通常,主要应用程序中的大多数 CRUD 活动都会通过信号在辅助应用程序中创建操作以创建日志和内容。
我想要实现的是避免辅助应用程序引发的异常通过 DRF 响应传播并显示给用户,或者以某种方式使它们“静默失败”,例如,用户随后会更新他的帐户和历史日志在辅助模型中创建会引发完整性错误 - 最好继续并且什么都不做,而不是通知用户。
有主要类型的异常 - IntegrityError 和 ValidationError。
我可以尝试尝试/排除所有验证错误,如果我知道约束名称,我可能会使用自定义异常处理程序来拦截完整性错误,但是 a)我仍然无法全部拦截它们,因为其中一些来自 Django 源代码 2)很多的硬编码。
问题是——是否有可能以某种方式拦截来自某个应用程序的所有异常并将它们全部抑制?
谢谢你。
解决方案
我想你很清楚,抑制所有异常本身就是不好的做法,但是,考虑到你的情况,也许你可以serializer.is_valid(raise_exception=False)
在你的 API中尝试这样的事情
推荐阅读
- javascript - flatPickr 中的日历在返回页面后消失
- typescript - 为什么打字稿加载器会导致 html webpack 插件中的错误?
- python - tkinter Text Widget:如何在软换行后自动缩进
- plugins - 源 MS Word 文档的自动编号/项目符号不会自动与目标 MS Word 文档的自动编号/项目符号对齐
- javascript - 禁止按钮单击父元素
- python - 如何根据两个条件遍历数据框?
- python - 使用 Pandas 跨数据帧的条件替换
- validation - F# - 这是验证和保持两个界限之间的值的好方法吗?
- html - 在角度如何以一种方式修剪值数据绑定
- oracle - Oracle RAC RMAN 备份未写入 NFS 共享