通过post请求传输django二进制文件的数据



我正在使用django rest框架和aws S3存储。我上传视频文件到S3桶,并保存在django模型的binaryfield格式的加密密钥(S3存储的要求)。现在我需要通过这个键到另一个远程django服务器使用post请求。当我使用请求库传递密钥时,不知何故,当我从其他服务器上的post请求中提取它时,它会发生变化,我无法使用它。如果有人告诉我如何通过使用django请求库的post请求传递binaryfield数据,我将不胜感激。我的post请求代码是

import requests enc_key = some_object.key # key is a models.BinaryField() data = {'enc_key' : enc_key} response = requests.post(url, data = data)

而在另一个服务器上,我从post请求中提取enc_key,如下所示

enc_key = request.POST['enc_key']

但是这个键已经不能用了。

enc_key真的是models.BinaryField的一个实例吗?在python3的情况下,应该是memoryview。

顺便说一句,requests库是完全独立于Django的,你应该尝试在没有Django的情况下发布二进制数据,然后在必要时与框架作斗争。也许您可以直接从远程机器检索数据库中的数据?如果没有,试着用这种方式发送测试二进制数据:

res = requests.post(url=remote_url,
                    data=data,
                    headers={'Content-Type': 'application/octet-stream'})

最新更新