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

Transferring django binaryfiled data via post request

我正在使用 django rest 框架和 aws S3 存储。我正在将视频文件上传到 S3 存储桶并将加密密钥保存为 Django 模型的二进制字段格式(S3 存储的要求)。现在我需要使用 post 请求将此密钥传递给另一个远程 django 服务器。当我使用请求库传递密钥时,当我从另一台服务器上的 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 完全分开,你应该尝试 post 完全不使用 Django 的二进制数据,然后在必要时使用框架。也许您可以直接从远程机器从数据库中检索数据?如果没有,请尝试以这种方式发送测试二进制数据:

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