1. 程式人生 > >Odoo作為後端時如何返回數據給webapp、移動端app

Odoo作為後端時如何返回數據給webapp、移動端app

sudo odoo 後綴 earch view 移動端 數組 hle 存儲

轉載請註明原文地址: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,生成數據流,然後發回去。

Odoo作為後端時如何返回數據給webapp、移動端app