Odoo作为后端时如何返回数据给网页、移动端
2017-09-05 16:19
1481 查看
这里的网页不包括使用jinja2渲染而返回的页面。
使用jinja2渲染的页面,可以直接在调用template.render()时传递参数给页面,页面通过EL表达式获取即可。
而对应一般页面、移动端发过来的请求,我们只能返回数据的情况下,应该怎么做呢?
一:返回文本数据
如果是返回文字信息的话,我们使用JSON作为传输媒介。
在odoo的controller中,把数据存到数组、字典、对象中,然后使用将其转为JSON数据:
附:
在发出请求端如何提取数据:以接收到json数组为例:
二:返回多媒体
对于视频、音频、图片等多媒体内容的传输,我们采用IO流的形式。
其中:多媒体字段可以通过pgAdmin查看对应的模型等数据库表,存储内容是 二进制数据 的就是保存多媒体内容的字段,用该字段名来提取二进制内容。
由于odoo默认是用base64格式来存储数据的,因此我们要对提取出来的二进制数据用base64进行解码,解码后得到的数据串作为参数,传给StringIO,生成数据流,然后发回去。
使用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,生成数据流,然后发回去。
相关文章推荐
- 后端返回的数据,如何在前端进行渲染
- 如何在Vue项目中使用Mockjs,模拟接口返回的数据,实现前后端分离独立开发
- 前端开发如何模拟后端返回json数据
- Java抓取网页数据(原网页+Javascript返回数据)
- 如何从网页上读取数据,将数据写入文件和读出
- Java抓取网页数据(原网页+Javascript返回数据)
- sql语句如何在insert一条数据后直接返回刚刚插入的数据的ID
- Python中如何获得访问网页所返回的cookie
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- 如何用InputStream作为BIRT的xml数据源
- 如何在Crystal Portlet中正确返回JSON数据给AJAX请求?
- Java抓取网页数据(原网页+Javascript返回数据)
- 如何利用fis3来模拟后台返回数据
- SQL:如何把多行查询结果,作为一行返回
- Spring MVC中Controller如何将数据返回给页面
- Chrome浏览器如何调试移动端网页信息
- VB 以 PSOT 方式提交数据 并得到返回的网页源码
- 【腾讯TMQ】如何轻松爬取网页数据
- 如何让Asp.net webAPI返回JSON格式数据
- MVC4.0 WebApi如何自定义返回数据类型