【问题标题】:How to get JSON data in an Odoo controller?如何在 Odoo 控制器中获取 JSON 数据?
【发布时间】:2016-03-10 10:30:58
【问题描述】:

我正在尝试向 Odoo 控制器发送一些 JSON 数据,但是当我发送请求时,我总是得到 404 作为响应。

这是我的控制器的代码:

import openerp.http as http
import logging
_logger = logging.getLogger(__name__)

class Controller(http.Controller):

    @http.route('/test/result', type='json', auth='public')
    def index(self, **args):
        _logger.info('The controller is called.')
        return '{"response": "OK"}'

现在,我在浏览器上键入 URL (http://localhost:8069/test/result) 以检查它是否可用,我得到 function index at 0x7f04a28>, /test/result: Function declared as capable of handling request of type 'json' but called with a request of type 'http'。这样我就知道控制器正在侦听该 URL 并期待 JSON 数据。

所以我打开一个 Python 控制台并输入:

import json
import requests
data = {'test': 'Hello'}
data_json = json.dumps(data)
r = requests.get('http://localhost:8069/test/result', data=data_json)

当我在控制台中打印 r 时,它返回 ,我在日志中看不到任何消息(我期待 控制器被调用。)。

这里有一个类似的问题,但不是完全一样的情况:

OpenERP @http.route('demo_json', type="json") URL not displaying JSON Data

谁能帮帮我?我做错了什么?

【问题讨论】:

    标签: json python-2.7 controller odoo-8 odoo


    【解决方案1】:

    我刚刚解决了这个问题。

    首先,正如@techsavvy 所说,我必须修改装饰器,写成type='http' 而不是type='json'

    然后,来自控制台的请求返回 404 错误,因为它不知道将数据发送到哪个数据库。在 localhost:8069 我有多个数据库。所以我试图在那个港口只有一个。也就是说,现在效果很好!

    为了在不删除任何其他数据库的情况下进行管理,我刚刚修改了配置文件以更改参数 db_filter 并在其中放置了一个仅包含我当前数据库的正则表达式。

    【讨论】:

      【解决方案2】:

      我刚刚解决了您的问题,我注意到您编写了从 javascript 调用的 JSON 路由。如果您想从浏览器 url 中调用它,那么您必须在路由中使用 type="http"auth="public" 参数定义路由器:

      @http.route('/', type='http', auth="public", website=True)
      

      【讨论】:

      • 非常感谢您回答@techsavvy,不幸的是,我已经按照您告诉我的方式修改了控制器的装饰器,但我仍然得到相同的404响应。
      • @forvas 我认为您没有使用 --db-filter = ur_db_name 启动您的 odoo 服务。
      • 是的,我做到了,如果我去localhost:8069/test/result,我可以看到 {"response": "OK"},但是如果我从 Pyhon 控制台执行请求,我仍然得到 404。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多