如何将嵌套字典转换为json对象-Odoo12?

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

我正在尝试将嵌套的字典作为json对象返回,但出现以下错误。

追踪(最近通话):在run_wsgi中,文件“ /usr/local/lib/python3.6/dist-packages/werkzeug/serving.py”,第270行执行(self.server.app)执行中的文件“ /usr/local/lib/python3.6/dist-packages/werkzeug/serving.py”,第258行application_iter = app(环境,start_response)应用中的文件“ /home/user/Projects/odoo_12_EE/odoo/service/server.py”,第409行返回self.app(e,s)应用程序中的文件“ /home/user/Projects/odoo_12_EE/odoo/service/wsgi_server.py”,返回application_unproxied(环境,start_response)在application_unproxied中的文件“ /home/user/Projects/odoo_12_EE/odoo/service/wsgi_server.py”,第117行结果= odoo.http.root(环境,start_response)call中的文件“ /home/user/Projects/odoo_12_EE/odoo/http.py”,行1318返回self.dispatch(环境,start_response)call中的文件“ /home/user/Projects/odoo_12_EE/odoo/http.py”,行1291返回self.app(环境,start_wrapped)call中的文件“ /usr/local/lib/python3.6/dist-packages/werkzeug/wsgi.py”,行766返回self.app(环境,start_response)调度中的文件“ /home/user/Projects/odoo_12_EE/odoo/http.py”,行1491返回响应(环境,start_response)TypeError:“ dict”对象不可调用---

这是我的代码。controller.py

  class GetOrderStatus(http.Controller):
      @http.route('/getOrderStatus/<string:order_num>',type="http",method=['POST','GET'],website=False,auth="public")
      def _get_order_status(self,**kw):
          print('kwww',kw)
          order_id = request.env['helpdesk.ticket'].sudo().search([('name','=',kw.get('order_num'))])
          order_id.ensure_one()
          vals = {
          "statusCode":200,
          "statuDescription":"success",
          "data":{"order_status":order_id.stage_id.name}
          }
          print('vals',vals)
          n = json.dumps(vals)
          return json.loads(n)

我该如何解决?

python odoo odoo-12
1个回答
1
投票

如果要与响应一起发送json数据,则将其设为json类型请求。

from odoo.http import Response
import json
    class GetOrderStatus(http.Controller):
          @http.route('/getOrderStatus/<string:order_num>', type="json", method=['POST','GET'], website=False, auth="public", csrf=False)
          def _get_order_status(self,**kw):
              order_id = request.env['helpdesk.ticket'].sudo().search([('name','=',kw.get('order_num'))])
              order_id.ensure_one()
              return Response(json.dumps({"order_status":order_id.stage_id.name}),content_type='application/json;charset=utf-8',status=200)
© www.soinside.com 2019 - 2024. All rights reserved.