我正在尝试将嵌套的字典作为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)
我该如何解决?
如果要与响应一起发送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)