如何从 Odoo 中的 Web 控制器调用 json 数据

Posted

技术标签:

【中文标题】如何从 Odoo 中的 Web 控制器调用 json 数据【英文标题】:How to call the json data from web controller in Odoo 【发布时间】:2021-02-10 06:09:28 【问题描述】:

我试图从控制器调用该方法,但没有成功。我总是得到错误 createdb() 有 2 个参数。知道如何获取 db_name 的值吗?请给我一些关于如何做到这一点的例子。非常感谢您的帮助。

这就是我所做的:

             <div class="form-group form-field o_website_form_required_custom">
               <label class="col-md-3 col-sm-4 control-label" 
                  for="partner_name">Company Name</label>
                    <div class="col-md-7 col-sm-8">
                        <input type="text"
                            class="form-control o_website_form_input"
                            name="partner_name" required=""
                            t-att-value="request.params.get('partner_name', '')" />
                    </div>
            </div>
    @http.route('/cystin/createdb', type='json', auth="public", methods=["POST"], website=True)
    def createdb(self, db_name):
        
        session = self._authenticate()
        if not session:
            return json.dumps(False)

        # create a new database
        headers = 'Content-Type': 'application/json'
        
        create_db_url = "http://localhost:8090/saas_api/create_db"
        data = "jsonrpc": 2.0, "params":  "name": db_name   //how to get this data?

        _logger.debug("Creating database...")
        r = session.post(url=create_db_url, data=json.dumps(data), headers=headers)

        if r.ok:
            return json.dumps(True)
        else:
            return json.dumps(False)
    var session = require('web.session');
   

    $(function()
        $("#trybutton").click(function()
        
           var db_name = $('input').attr('name', 'partner_name').val();
          session.rpc('/cystin/createdb',
          
            db_name: db_name,
          ).then(function() 
          
            $("div.spanner").addClass("show");
            $("div.overlay").addClass("show")
          );
        );
    );

【问题讨论】:

【参考方案1】:

我已经解决了。 从 xml 获取正确属性时感到困惑。

var db_name = $("input[name='partner_name']").val();

【讨论】:

以上是关于如何从 Odoo 中的 Web 控制器调用 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

Odoo Web Service API

odoo13学习---16 Web客户端开发

Odoo Web Service API

Odoo 添加 Treeview Web 控制器

odoo以编程方式添加采购订单(rfq)

odoo模块