2016-05-13 36 views
1

我想在odoo中創建jsonrpc服務。當我創建清潔模塊使用DOC https://www.odoo.com/documentation/8.0/howtos/website.html並添加這樣的代碼Odoo JSONRPC服務(http.route類型= json)不起作用

**[controllers.py]** 
@http.route(['/my_academy/ret/'], type='json', auth="public") 
    def change_size(self): 
     return {'x': 1, 'y': 2} 

嘗試從JS連接:

"use strict"; 
    var requestUrl = '/my_academy/ret/'; 

    openerp.jsonRpc(requestUrl, 'call', {}) 
     .then(function (data) { 
      alert(data['x']); 
     }); 

所有做工精細。我收到消息'1'。 當我創建使用DOC https://www.odoo.com/documentation/8.0/howtos/backend.html模塊,並添加這樣的代碼

**[controllers.py]** 
@http.route(['/academy/jsonrpc/'], type='json', auth="public") 
    def return_map(self): 
     return {'x': 12345, 'y': 2222} 

修改js和嘗試連接

"use strict"; 
    var requestUrl = '/academy/jsonrpc/'; 

    openerp.jsonRpc(requestUrl, 'call', {}) 
     .then(function (data) { 
      alert(data['x']); 
     }); 

我收到錯誤

code: 200 
data: Object 
    arguments: Array[0] 
     length: 0 
     __proto__: Array[0] 
     .... 
    debug: "Traceback (most recent call last):↵ 
      File "/home/skif/odoo/openerp/http.py", line 539, in _handle_exception↵  
      return super(JsonRequest, self)._handle_exception(exception)↵ 
      File "/home/skif/odoo/openerp/addons/base/ir/ir_http.py", line 152, in _dispatch↵  
      rule, arguments = self._find_handler(return_rule=True)↵ 
      File "/home/skif/odoo/openerp/addons/base/ir/ir_http.py", line 65, in _find_handler↵  
      return self.routing_map().bind_to_environ(request.httprequest.environ).match(return_rule=return_rule)↵ 
      File "/usr/local/lib/python2.7/dist-packages/werkzeug/routing.py", line 1430, in match↵  
      raise NotFound()↵ 
      NotFound: 404: Not Found↵" 
    message: "" 
    name: "werkzeug.exceptions.NotFound" 
    __proto__: Object 

message: "Odoo Server Error" 
__proto__:Object 

我在做什麼錯?爲什麼我不能使用類似的代碼?

回答

0

試試這個代碼:

@http.route(['/academy/jsonrpc'], type='json', auth="public", website=True) 
def return_map(self, **post): 
    return {'x': 12345, 'y': 2222} 

它可能在你的情況有所幫助。

+0

沒有任何變化。 – Skif

+0

你有沒有導入你的控制器在init.py – prakash

+0

我試着使用auth =「none」 - 什麼也沒有。如果模塊開發的網站,然後一切正常。如果模塊開發後端,如https://www.odoo.com/documentation/8.0/howtos/backend.html我有問題。可能是我需要聲明任何模塊或安全參數? – Skif