我正在使用django rest框架和aws S3存储。我正在将视频文件上传到S3存储桶并以django模型的二进制字段格式保存加密密钥(s3存储的要求)。现在我需要使用post请求将此密钥传递给另一个远程django服务器。当我使用请求库传递密钥时,当我从其他服务器上的post请求中提取它并且我无法使用它时,它会以某种方式更改。如果有人告诉我如何使用django请求库通过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']
但此密钥不再可用。
答案 0 :(得分:0)
enc_key
真的是models.BinaryField的实例吗?在python3的情况下,它应该是memoryview。
顺便说一下,requests
完全与Django分开,你应该尝试在没有Django的情况下发布二进制数据,然后如果是neceassary则使用框架进行争夺。也许你可以直接从远程机器从数据库中检索数据?如果没有,请尝试以这种方式发送测试二进制数据:
res = requests.post(url=remote_url,
data=data,
headers={'Content-Type': 'application/octet-stream'})