问题描述
嗨,我在 odoo 类型中创建了一个控制器路由 json
,我正在尝试从 Flask 函数调用该路由。但我遇到了以下错误。
回溯(最近一次调用最后一次):文件 "/home/vox-lap-009/Projects/odoo-14EE/odoo/addons/base/models/ir_http.py",第 237 行,在 _dispatch result = request.dispatch() 文件“/home/vox-lap-009/Projects/odoo-14EE/odoo/http.py”,第 682 行,在 派遣 result = self._call_function(**self.params) 文件“/home/vox-lap-009/Projects/odoo-14EE/odoo/http.py”,第325行,在 _call_function 引发 werkzeug.exceptions.BadRequest(msg % params) 异常
上述异常是以下异常的直接原因:
回溯(最近一次调用最后一次):文件
“/home/vox-lap-009/Projects/odoo-14EE/odoo/http.py”,第 638 行,在
_handle_exception
return super(JsonRequest,self)._handle_exception(exception) 文件“/home/vox-lap-009/Projects/odoo-14EE/odoo/http.py”,第314行,在
_handle_exception
从 new_cause werkzeug.exceptions.BadRequest 引发 exception.with_traceback(None): 400 Bad Request:
这是我在 odoo 中的控制器,
# -*- coding: utf-8 -*-
from odoo import http
from odoo.http import request
import json
class CreateLead(http.Controller):
@http.route('/createLead',type="json",methods=['POST'],website=False,auth="public")
def CreateCustomer(self,**kw):
print('kwww',kw)
try:
obj_partner = request.env['res.partner']
obj_lead = request.env['crm.lead']
name = kw.get('name')
phone = kw.get('phone')
email = kw.get('email')
partner_id = obj_partner.sudo().search([('phone','=',phone)])
if not partner_id:
vals = {'name':name,'phone':phone,'email':email
}
partner_id = obj_partner.sudo().create(vals)
lead_vals = {
'partner_id':partner_id.id,'name':kw.get('product'),'description':'Delivery at '+kw.get('address')+'\nDate:'+kw.get('date')+''
}
lead_id = obj_lead.sudo().create(lead_vals)
return json.dumps({'status':'OK','id':lead_id.id})
except Exception as e:
return json.dumps({'status':'Failed','error':str(e)})
import requests
import json
# odoo_url = "http://voxtronindia.fortiddns.com:8013/"
odoo_url = "http://localhost:5014/"
headers = {'Content-Type': 'application/json'}
url = odoo_url+'/createLead'
vals = {
'name': 'Agu','phone': '919567781168','email': 'Agu@gmail.com','product': 'mac','address': 'Thrissur \nKoratty\nKerala','date': '2021-03-02'}
val = dict(params=vals)
print('valsssssssssssssss',val)
r = requests.post(url,data=json.dumps(val),headers=headers)
# r=requests.post(url=url,headers=headers,data=json.dumps(val))
# r=requests.post(url=url,json=val)
print('result',r.json())
注意:我在其他一些项目中使用了相同的函数,它工作正常,如果我从 restclient(Chrome 扩展程序)调用它,路由也能完美运行。
如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)