转载请注明原文地址: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的更多相关文章

  1. PHP odbc查询SQL SERVER数据库带有中文时无返回数据

    近日遇到一个小麻烦当数据库中有中文字符数据 结果odbc_fetch_array后 我用json_encode怎么也得不到数据页面一片空白 我脑子也一片空白后来才知道sqlserver 没有 UTF- ...

  2. ajax get和post请求 后端接收并返回数据

    get请求$(function(){ //alert("23"); var x = "#page"; var y = "${ctx!}/static/ ...

  3. AFN请求后台返回数据为NSInlineData类型的处理

    在利用AFN进行数据解析时出现返回数据为 <7b227374 61747573 223a302c 226d6573 73616765 223a22e6 82a8e79a 84e6898b e69 ...

  4. C#服务端通过Socket推送数据到Android端App中

    需求: 描述:实时在客户端上获取到哪些款需要补货. 要求: 后台需要使用c#,并且哪些需要补货的逻辑写在公司框架内,客户端采用PDA(即Android客户端 版本4.4) . 用户打开了补货通知页面时 ...

  5. 【解决方案】客户端请求数据较大时,nginx返回数据被截断

    [问题描述]:客户端使用curl命令向nginx请求数据,当返回数据量较大时,数据被截断,客户端无法获取完整的数据. [问题原因]:nginx配置文件中包含了proxy_buffer_size.pro ...

  6. 关于C#读取MySql数据时,返回DataTable中某字段数据是System.Array[]形式

    我在使用C#(VS2008)读取MySql数据库(5.1版本)时,返回的DataTable数据中arrivalDate字段数据显示为System.Array[]形式(程序中没有对返回的数据进行任何加工 ...

  7. android 学习随笔十五(Activity的生命周期与摧毁时返回数据 )

    1.Activity的生命周期 onCreate:创建时调用 onStart:在屏幕上可见,但是还没有获得焦点 onResume:可见并且获得焦点 onPause:可见,但是失去焦点 onStop:不 ...

  8. 在做MVC和WebApi写返回数据时,可以这样定义

    public class Messages { /// <summary> /// 返回包含是否成功以及消息字符结果 /// </summary> /// <param ...

  9. ajax请求为异步操作时,返回的数据不会被并列函数执行

    ajax请求为异步操作时,返回的数据不会被并列函数执行

随机推荐

  1. java 二分法

    源码 public class Dichotomy { public static void main(String[] args){ int[] array = new int[12]; for(i ...

  2. 使用EXCEL 完成分组统计

    表testTable 有以下数据,要统计各个电视剧的数量.在开发人员看来,使用sql操作完成select name,count(*) from TestTable where 1=1 group by ...

  3. 《JavaWeb从入门到改行》JDBC经典秘方QueryRunner

    目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...

  4. jQuery基础(Ajax,load(),getJSON(),getScript(),post(),ajax(),同步/异步请求数据)

    1.使用load()方法异步请求数据   使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:   load(url,[data],[callba ...

  5. 2017年5月22日 HTML基础知识(一)

    一.Html 结构 1.1.HTML基本文档格式—<html> 标记 —<html>文档的头部好和主体内容 </html>  根标记 —<head> 文 ...

  6. elixir 模块

    模块定义  defmodule 函数定义  def 私有函数  defp  --相当于其他语言 private iex(29)> defmodule Math do...(29)> def ...

  7. Flutter的教程:ListView

    本文学习一下列表widget,是最常见的需求 在Flutter中,用ListView来显示列表项,支持垂直和水平方向展示,通过一个属性我们就可以控制其方向 1.水平的列表 2.垂直的列表 3.数据量非 ...

  8. 5maven工程莫名其妙只在项目名称那里有一个红叉

    manven工程里面没有报错的地方,编译也没有问题,只是项目名称那里有一个红叉.   解决办法:   右击项目-->maven-->update project   注意: 这种方法有时可 ...

  9. redis介绍(4)实战场景

    redis我主要在两方面说明: 集群下的session的管理 Tomcat 与 DB之间缓存

  10. c# 线程池:开启10个线程运行Fibonacci,并在所有线程运行完后,得出结果。

    namespace CAThreadPool { class ThreadpoolDemo6 { static void Main(string[] args) { ; // One event is ...