Я пробовал разные способы сделать это, но они не сработали.Как отправить простое сообщение и статус как ответ в контроллере Odoo JSON?
Сначала я попробовал этот путь:
import openerp.http as http
from openerp.http import Response
class ResPartnerController(http.Controller):
@http.route('/odoo/create_partner', type='json', auth='none')
def index(self, **kwargs):
Response.status = '400'
return "Result message"
я получаю правильный статус и сообщение в клиенте. Но я получаю это странное предупреждение, если я делать какие-либо действия на интерфейсе Odoo
Есть ли способ избежать этого сообщения?
Я попробовал это оба пути, а также:
data = {'result': 'RESULT message'}
json_data = json.dumps(data, encoding='utf-8')
headers = [('Content-Type', '{}; charset=utf-8'.format('application/json'))]
mimetype = 'application/json'
res = Response(
response=json_data,
status=status,
headers=headers,
mimetype=mimetype,
)
return res
msg = u'Response 200 badly built, falling back to a simple 200 OK response'
res = Response(msg, status=200)
return res
Но я всегда получаю эту ошибку как ответ на клиенте:
TypeError: <Response 9 bytes [400 BAD REQUEST]> is not JSON serializable\n", "message": "<Response 9 bytes [400 BAD REQUEST]> is not JSON serializable"
Итак, есть чистый способ ответа на простое сообщение со статусом ответа?
Это важно для меня, чтобы отправить статус ответа, а
Если я просто ответить сообщение все работает нормально, но как изменить статус без посторонних поведения?
Кстати, я использую этот скрипт, чтобы делать звонки
# -*- coding: utf-8 -*-
import requests
import json
url = 'http://localhost:8069/odoo/create_partner'
headers = {'Content-Type': 'application/json'}
data_res_partner = {
'params': {
'name': 'Example',
'email': '[email protected]',
}
}
data_json = json.dumps(data_res_partner)
response = requests.post(url=url, data=data_json, headers=headers)
print(response.status_code)
print(response.content)
Update
Наконец @Phillip Stack сказал мне, чтобы сделать это с помощью XML-RPC, так что я написал эту other question в чтобы разъяснить мои сомнения.
что определение контроллера, как? это контроллер 'json' или' http'? какие просьбы он принимает ?. мы можем, вероятно, догадаться об этих деталях, но лучше всего включить полный код вашего контроллера вместо '[...]' – danidee
Из внешнего вида внешнего скрипта вы пытаетесь создать интерфейс отдыха для создания контакта. Вы должны действительно использовать jsonrpc или xmlrpc, поскольку эта структура уже существует, чтобы делать то, что вы пытаетесь достичь. –
Спасибо за ваш комментарий @phillipstack. Затем, когда я должен использовать контроллер? Нужно ли только показывать веб-сайты в качестве ответа? – ChesuCR