zoukankan      html  css  js  c++  java
  • Odoo作为后端时如何返回数据给webapp、移动端app

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307315.html 

    使用jinja2渲染的页面,可以直接在调用template.render()时传递参数给页面,页面通过EL表达式获取即可。

    而对应一般webapp、移动端app发过来的请求,我们只能返回数据的情况下,应该怎么做呢?

    一:返回文本数据

        如果是返回文字信息的话,我们使用JSON作为传输媒介。

        在odoo的controller中,把数据存到数组、字典、对象中,然后使用将其转为JSON数据:

    import json//导入json模块
    
    
    //在方法中
     jsonStr = json.dumps(datas)//把数据转化为json格式
     return jsonStr.decode('unicode_escape')//return给发出请求者

    附:

    在app端如何提取数据:以接收到json数组为例:

    for (let i = 0; i < json.length; i++) {//遍历返回到json数组
         var value = json[i].key//根据key提取内容
       }

    二:返回多媒体

        对于视频、音频、图片等多媒体内容的传输,我们采用IO流的形式。

    from cStringIO import StringIO
    import base64
    
    record = request.env['模型名'].sudo().search([(搜索条件)])
    return http.send_file(StringIO(base64.standard_b64decode(record.多媒体字段)), filename="文件名可以自己定,注意后缀名一定要有,不然发回去的IO流不能被正确解析",as_attachment=True)

        其中:多媒体字段可以通过pgAdmin查看对应的模型等数据库表,存储内容是  二进制数据   的就是保存多媒体内容的字段,用该字段名来提取二进制内容。

        由于odoo默认是用base64格式来存储数据的,因此我们要对提取出来的二进制数据用base64进行解码,解码后得到的数据串作为参数,传给StringIO,生成数据流,然后发回去。

  • 相关阅读:
    poj2187 Beauty Contest 旋转卡壳
    2017/8/6 考试吐槽
    bzoj2618 凸多边形 半平面交
    cogs1600 奶牛冰壶 计算几何
    cogs896 圈奶牛 凸包
    cogs1743 忠诚 zkw
    BZOJ 3224 普通平衡树 平衡树的两种姿势:SBT,splay。01trie
    BZOJ 3196 二逼平衡树
    BZOJ 1901 Dynamic Rankings
    BZOJ 4325[NOIP2015]斗地主
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10825948.html
Copyright © 2011-2022 走看看