django bytesIO to base64 String&return as JSON

use*_*772 16 python django python-3.x

我正在使用python 3并且我有这个代码,试图让base64离开流并返回json - 但不能正常工作.

       stream = BytesIO()
       img.save(stream,format='png')
       return base64.b64encode(stream.getvalue())
Run Code Online (Sandbox Code Playgroud)

在我看来,我有:

hm =mymap()
    strHM = hm.generate(data)
return HttpResponse(json.dumps({"img": strHM}),content_type="application/json"  )
Run Code Online (Sandbox Code Playgroud)

获取错误不是JSON可序列化的.base64.b64encode(stream.getvalue())似乎给出了字节

fal*_*tru 24

在Python 3.x中,base64.b64encode接受一个bytes对象并返回一个bytes对象.

>>> base64.b64encode(b'a')
b'YQ=='
>>> base64.b64encode(b'a').decode()
'YQ=='
Run Code Online (Sandbox Code Playgroud)

您需要将其转换为str对象,使用bytes.decode:

return base64.b64encode(stream.getvalue()).decode()
Run Code Online (Sandbox Code Playgroud)