Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用django HttpResponse返回二进制数据_Python_Django_String_Binary_Httpresponse - Fatal编程技术网

Python 使用django HttpResponse返回二进制数据

Python 使用django HttpResponse返回二进制数据,python,django,string,binary,httpresponse,Python,Django,String,Binary,Httpresponse,我试图让Django的HttpResponse返回二进制数据,但没有太大成功。我已经尝试了一段时间不同的方法,但没有成功 只要二进制数据值不超出ASCII字符范围(小于0-255),就可以将字符串编码为ASCII字符。使用拉丁语-1编码时也会发生同样的情况 创建字节字符串工作得很好,但如果包含某些值,则似乎会失败,例如,如果数据中包含以下字节:“\xf6\x52”,则会得到不同的字节。由于某种原因,当我试图查看结果响应时,第一个字节\xf6被转换为0xfffd 我很想得到一些反馈和帮助 非常感谢

我试图让Django的HttpResponse返回二进制数据,但没有太大成功。我已经尝试了一段时间不同的方法,但没有成功

只要二进制数据值不超出ASCII字符范围(小于0-255),就可以将字符串编码为ASCII字符。使用拉丁语-1编码时也会发生同样的情况

创建字节字符串工作得很好,但如果包含某些值,则似乎会失败,例如,如果数据中包含以下字节:“\xf6\x52”,则会得到不同的字节。由于某种原因,当我试图查看结果响应时,第一个字节\xf6被转换为0xfffd

我很想得到一些反馈和帮助

非常感谢


-A-

只需将数据转换为字符串即可

return HttpResponse(str(data), 'image/jpeg')

为我工作。

好的答案既能解释也能提供代码。考虑更新你的答案,包括解释这个代码是如何工作的以及为什么它是最好的选项。所需的导入:“从Django.HTTP导入HythPrimeSee”只是想补充这一点,这对我在使用Django、Drf、WeasyPress和DRF PDF的组合来返回PDF文件时有很大帮助。我被Unicode错误弄疯了,发现用这一行替换掉我所有的胡说八道,这件事就成功了!当然,
octet-stream
可能不是适合我的内容类型,但至少API正在工作,我只需要调整一点小东西。:-)鉴于Python3是唯一剩下的受支持的Python版本,并且Python3中str的含义与Python2中str的含义不同,不幸的是,这个答案已经过时并且令人困惑。
return HttpResponse(data, content_type='application/octet-stream')