如何缩短请求响应的错误文本?

问题描述 投票:0回答:1

在odoo15框架中我有一个api控制器。 在某些情况下,我需要返回状态 500 和简短错误日志的响应。

当我尝试:

raise Exception('test message')
odoo 返回这样的日志响应:

{"jsonrpc": "2.0", "id": null, "error": {"code": 200, "message": "Odoo Server Error", "data": {"name": "odoo.exceptions.AccessError", "debug": "Traceback (most recent call last):\n  File \"/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py\", line 237, in _dispatch\n    result = request.dispatch()\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 687, in dispatch\n    result = self._call_function(**self.params)\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 359, in _call_function\n    return checked_call(self.db, *args, **kwargs)\n  File \"/usr/lib/python3/dist-packages/odoo/service/model.py\", line 94, in wrapper\n    return f(dbname, *args, **kwargs)\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 348, in checked_call\n    result = self.endpoint(*a, **kw)\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 916, in __call__\n    return self.method(*args, **kw)\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 535, in response_wrap\n    response = f(*args, **kw)\n  File \"/var/odoo/custom/tada/controllers/schedule.py\", line 159, in update_department_budget\n    raise AccessError('test')\nException\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 643, in _handle_exception\n    return super(JsonRequest, self)._handle_exception(exception)\n  File \"/usr/lib/python3/dist-packages/odoo/http.py\", line 301, in _handle_exception\n    raise exception.with_traceback(None) from new_cause\nodoo.exceptions.AccessError: test\n", "message": "test message", "arguments": ["test message"], "context": {}}}}

很长,包含文件名,其他开发者需要在这乱七八糟的地方搜索我的消息。

我尝试了另一种方法来创建 request.Response() 对象:

return request.Response('test message', status_code=500)

但它返回结果时没有我的消息:

'{"jsonrpc": "2.0", "id": null, "result": "<Response 4 bytes [500 INTERNAL SERVER ERROR]>"}'

有办法做到这一点吗?

python odoo odoo-15
1个回答
0
投票
res = {'status': 'error', 'error': 'Invalid API Key'}
return request.Response(response=json.dumps(res), status=500)

尝试创建一个响应对象,其中包含 JSON 格式的字符串作为响应内容,状态代码为 500(内部服务器错误)。

© www.soinside.com 2019 - 2024. All rights reserved.