DRf,处理未处理的异常

2024-01-16

使用DRF时,Django的ValueError(django.core.exceptions)和IntegrityError(django.db)不被处理。

DRF's def exception_handler有(APIException、Http404、PermissionDenied)的异常处理代码

下面是一个代码Http404

 elif isinstance(exc, Http404):
     msg = _('Not found.')
     data = {'detail': six.text_type(msg)}

     set_rollback()
     return Response(data, status=status.HTTP_404_NOT_FOUND)

所以我可以创建我的自定义异常处理程序

 def custom_exception_handler(exc, context):
     # Call REST framework's default exception handler first,
     # to get the standard error response.
     response = exception_handler(exc, context)

     if isinstance(exc, ValidationError) or isinstance(exc, IntegrityError):
         data = {
             'errors': str(exc)
         }
         set_rollback()   # not sure about this line
         response = Response(data, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

     return response

我不确定的目的set_rollback()代码中的一行,不确定我使用这段代码是否安全。


原因是IntegrityError and ValueError默认情况下,DRF 中不处理它们,因为它们需要根据具体情况进行处理。因此,编写像您在这里尝试执行的通用异常处理程序可能不是正确的方法。

例如,一些IntegrityErrors也许可以忽略,但在资金转移过程中发生的类似情况则不能。所以最好尝试这样的事情:

def create(self, request):
    try :
        return super(MyViewSet, self).create(request)
    except IntergrityError:
        # your decision here how to handle it.
        raise APIException(detail='Custom message')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DRf,处理未处理的异常 的相关文章

  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • 使用缓存时计算“页面浏览量”或“点击量”

    我有一个叫做show board 在其中 除其他外 我增加了一个字段Board views每次运行时加 1 以计算页面浏览量 问题是当我在该视图上使用 cache page 装饰器时 Board views仅在每次生成新的缓存视图时才会增加
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • 我在 Facebook 上的“access_token”是“不正确的值”

    我正在使用 django rest auth 它是 Django all auth 的 API 扩展 我正在构建一个可以使用 Facebook 令牌注册 登录的移动应用程序 网址 http localhost 8000 rest auth
  • Jquery 和 Django 多个复选框

    我是 jquery 的初学者 所以请耐心等待 我有一个 jquery 函数 允许我选择多个复选框并创建一个字符串 如下所示 function getSelectedVals var tmp input name checks each fu
  • Django 还原不保存在 shell 中所做的修订

    我做了初始安装 https github com etianen django reversion wiki步骤并创建了初始修订版 但是当我在 django shell 中保存模型时 未创建新修订版 In 1 s Shop objects
  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • 预取相关之后选择相关

    我的模型看起来像 class Book models Model publisher models ForeignKey Publisher This is not important class Baz models Model a mo
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • Django LoginForm 中间件打破了基于类的视图

    据几其他答案 https stackoverflow com questions 2734055 putting a django login form on every page 我使用中间件在项目的每个页面上显示登录表单 以便用户可以就
  • 让 Pytest 在 Django cookiecutter / Python 3.x 项目中运行

    我正在建造一个新的cookiecutter django https github com pydanny cookiecutter django项目 这里有本地设置说明 http cookiecutter django readthedo
  • 在 ubuntu 中卸载 python 模块

    我必须删除一个名为 django 的 python 模块 一种流行的模块 因为我安装了错误的版本 1 3 py 2 6 中的 beta 如何卸载这个模块 请解释一下 因为我只在 Windows 中使用过 python 而从未在 Ubuntu
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 如何继承并重写 django 模型类来创建 listOfStringsField?

    我想为 django 模型创建一个新类型的字段 它基本上是一个 ListOfStrings 因此 在您的模型代码中 您将具有以下内容 模型 py from django db import models class ListOfString
  • 在 django vanilla CreateView 上设置当前用户

    我想用当前登录的用户更新我的模型 我正在使用 django vanilla views 为了存储新记录 我尝试使用 CreateView 我不想在表单上显示用户 只需自动更新即可 这是我的模型 class Measurement model
  • Python 中的单词匹配

    我有这个 但它正在进行部分匹配 for il in ignore list if il word in title or il word in text return True 我怎样才能只匹配整个单词 您需要将标题和文本字符串拆分为单词列
  • 在 Django Rest Framework 中访问视图集和序列化器中的请求对象?

    我想访问 DRF 中 Views py 和 Serializers py 中的请求对象 我的观点 py class ProductViewSet viewsets ReadOnlyModelViewSet This viewset auto
  • 在 django 查询集上使用 iterator()

    我最近遇到了一些奇怪的行为 需要检查我的理解 我在模型中使用一个简单的过滤器 然后迭代结果 e g allbooks Book objects filter author A A Milne for book in allbooks do

随机推荐

  • 如何查找solr服务器是否正在运行

    我正在运行一个从 solr 服务器获取搜索结果的应用程序 但是当服务器未运行时 我没有收到服务器的响应 有什么方法可以发现我的服务器没有运行 以便我可以给出正确的错误消息 您可以定期 ping 您的服务器 例如http localhost
  • iOS9:崩溃报告中的重复行导致symbolicatecrash卡住

    This is 不是一个问题因为我已经找到了解决方法 我将其发布 以便其他人可以利用我在其上花费的时间 并使用我建议的解决方法 我收到了一些奇怪的崩溃报告 一行被重复了很多次 0x190e08000 0x190e49fff Notes ar
  • 三柱图

    某个过程的结果是从 A 到 C 通过 B 的路径列表 例如 which effect A1 A2 10 1 1 1 1 10 2 1 2 1 10 28 1 3 1 10 6 9 4 1 10 24 9 5 1 10 28 9 我想要的是一
  • 可捕获的致命错误:传递给 Illuminate\Routing\UrlGenerator::__construct() 的参数 2 必须是 Illuminate\Http\Request 的实例,给定 null

    当我尝试运行时出现此错误php artisan anything PHP Catchable fatal error Argument 2 passed to Illuminate Routing UrlGenerator construc
  • 苹果:联盟链接可以通过应用内购买赚钱吗?

    苹果最近 在过去一两个月内 对其联属计划进行了一系列更改 您能回答这个问题 联盟链接可以通过应用内购买赚钱吗 示例 联盟链接到一个免费应用程序 然后导致该应用程序中的应用程序内购买 是否会为链接所有者赚取佣金 先感谢您 简短的回答是 是 应
  • Android - 1 除以 2 = 0

    我一直在尝试使用我的新 IOIO for android 并且需要找到信号的频率 所以我将信号转换为二进制 然后用 1 除以 1 之间的时间 尽管当我这样做时 我发现我的输出为 0 然后我决定看看 1 2 给了我什么 令我惊讶的是它也给了
  • gluon Mobile LocalNotificationsServices.class 不工作

    大家好 我是新来的使用javafx进行Android开发 我正在尝试使用 android 创建推送通知javafx javafxports 和 gluon Mobile 我的问题是推送通知没有按照我的预期显示 我的这个想法来自 http g
  • 通过 bash 脚本询问 MongoDB 是否是 Master

    我的 mongodb 应该每天运行一次备份 它由一个主设备和两个从设备运行 我需要备份其中一个 因为它们只是副本 最简单的方法是仅在一个实例上运行备份脚本 但如果这个实例宕机了怎么办 因此 我认为在主服务器上运行备份脚本会很好 因为即使其他
  • JavaScript 事件委托 - 行为

    我正在尝试创建网页 为了提高性能 我决定使用事件委托 而不是直接绑定 但我遇到了事件委托的奇怪行为 或者我错过了一些东西 这是我的 HTML 结构 div section class myClass h1 Heading 1 h1 p So
  • Matplotlib 根据值使用不同颜色的条形图

    我正在绘制各个行业及其所有股票的回报 我希望值 gt 100 为绿色 sector lst XLK XLF XLE etc for i in sector lst fig plt figure figsize 12 8 for x in s
  • 在Python中确定特定数字的精度和小数位数

    我在 Python 中有一个包含浮点数的变量 例如num 24654 123 并且我想确定数字的精度和小数位数 在 Oracle 意义上 因此 123 45678 应该给我 8 5 12 76 应该给我 4 2 等等 我首先考虑使用字符串表
  • 如何制作像 Timely 这样漂亮又时尚的应用程序

    谷歌在设计方面的引用 以及一些应用程序示例 基于什么Google说在http developer android com http developer android com 在设计部分 开发人员应考虑三个目标 让我着迷 简化我的生活 让我
  • python networkx:如何获取随机路径?

    在networkx中有这样一个函数 nx all simple paths G source 0 target 5 它返回所有路径 但如果有很多可能的路径 它会工作很长时间 如何立即获得任意路径 它不产生all路径 它返回一个生成器 该生成
  • GCC 中的 C 函数对齐

    我正在尝试使用 aligned 16 属性将函数字节对齐到 16 字节边界 我做了以下事情 void attribute aligned 16 function 来源 http gcc gnu org onlinedocs gcc Func
  • 在箱线图中组合两个数据帧的信息

    我有两个通过转换 numpy 数组获得的数据帧 df1 和 df2 每个数据帧都有以下数据 data1 data2 datan indicator 0 2 482738 0 484757 1 344557 a 1 4 566902 1 33
  • 组合多个谓词

    c NET 2 0 有什么办法吗 组合多个谓词 假设我有以下代码 List
  • PHP 中的“finally”关键字的作用是什么?

    考虑这两个例子 and
  • FileNotFound 尝试加载“Microsoft.VisualStudio.Web.PageInspector.Runtime”的 v14.0.0.0

    我有一个 MVC 项目 该项目一直运行良好 直到我一周前更新了我的机器 我现在在尝试运行项目时收到绑定错误 托管调试助手 BindingFailure 在 C Program Files x86 IIS Express iisexpress
  • AngularJS 单元测试中未找到模块错误

    我正在尝试使用 Karma Jasmine 进行一个非常简单的测试 以对我的 AngularJS 应用程序进行单元测试 这似乎有效 beforeEach module myApp it should blah function expect
  • DRf,处理未处理的异常

    使用DRF时 Django的ValueError django core exceptions 和IntegrityError django db 不被处理 DRF s def exception handler有 APIException