在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]>"}'
有办法做到这一点吗?
res = {'status': 'error', 'error': 'Invalid API Key'}
return request.Response(response=json.dumps(res), status=500)
尝试创建一个响应对象,其中包含 JSON 格式的字符串作为响应内容,状态代码为 500(内部服务器错误)。