Odoo作为后端时如何返回数据给网页移动端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Odoo作为后端时如何返回数据给网页移动端相关的知识,希望对你有一定的参考价值。

这里的网页不包括使用jinja2渲染而返回的页面。

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

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

 

一:返回文本数据

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

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

import json//导入json模块


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

附:

在发出请求端如何提取数据:以接收到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,生成数据流,然后发回去。

 

以上是关于Odoo作为后端时如何返回数据给网页移动端的主要内容,如果未能解决你的问题,请参考以下文章

将 MS Access 用作 Winform 或 WPF 的后端时如何避免损坏 MS Access

怎么看前端有没有展示后端的数据

怎么解决前端传的时间为null后端解析爆错

Odoo 后端数据库postgreSQL事务级别

SpringBoot构建RESTful风格应用

后端返回URL含有中文进行编码、解码处理