odoo 中http response 返回图片

项目中需要对小程序的请求生成一个二维码的图片,由于微信官方暂未提供直接生成二维码的接口,如果要在小程序中生成二维码还需要借助第三方的库,实现起来相对复杂。
这里采用的方式是,让后台程序生成二维码,让小程序的image组建去请求后台的URL,由这个URL动态地提供二维码图片供小程序使用。

这里的后台程序是odoo提供的接口,下面的代码省略了小程序接口认证的部分:

1
2
3
4
5
6
7
8
def getqrcode(request,*args,**kwargs):
....
img = qrcode.make("http://mixoo.cn")
buffer = BytesIO()
img.save(buffer,format="jpeg")
response=request.make_response(buffer.getvalue(),{"Content-Type":"image/jpeg"})
response.status_code = 200
return response

odoo中的图片是以二进制文件存在数据库中的(也可以存在指定文件夹中),而我们这里是用代码生成的图片,所以这里要把生成的PIL对象转化成字节,然后传递给response对象,从而在网页中显示出来。