gpt4 book ai didi

JSON 中的 Django REST Framework FileField 数据

转载 作者:行者123 更新时间:2023-12-02 08:31:00 25 4
gpt4 key购买 nike

在 Django REST Framework (DRF) 中,我如何支持反序列化 base64 编码的二进制数据?

我有一个模型:

class MyModel(Model):
data = models.FileField(...)

并且我希望能够以 base64 编码的形式发送此数据,而不必将数据分为多部分或“文件上传”。看着 Parsers ,只有 FileUploadParserMultiPartParser 似乎可以解析文件。

我希望能够以类似 JSON 的形式发送此数据(即在 data 而不是 files 中发送二进制数据:

{
'data':'...'
}

最佳答案

我通过创建一个新的 Parser 解决了这个问题:

def get_B64_JSON_Parser(fields):
class Impl(parsers.JSONParser):
media_type = 'application/json+b64'

def parse(self, *args, **kwargs):
ret = super(Impl, self).parse(*args, **kwargs)
for field in fields:
ret[field] = SimpleUploadedFile(name=field, content=ret[field].decode('base64'))
return ret
return Impl

然后我在 View 中使用它:

class TestModelViewSet(viewsets.ModelViewSet):
parser_classes = [get_B64_JSON_Parser(('data_file',)),]

关于JSON 中的 Django REST Framework FileField 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com