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,生成數據流,然后發回去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM