gpt4 book ai didi

json - 如何在 Django 中序列化(JSON)文件字段

转载 作者:行者123 更新时间:2023-12-04 07:16:42 25 4
gpt4 key购买 nike

我是 Django 的新手,正在尝试构建一个应用程序来为我的项目测试一些东西。我想阅读表单 - 进行一些验证,然后将输入发送到另一个模块(比如单独运行的调度程序)。调度程序 rest api 将使用表单数据(即文件)调用,调度程序会将数据加载到模型中。在调用其余 api 之前,我正在使用 python 请求并将数据序列化为 json。这是我得到错误的地方。 Django on request.FILES 创建一个 InMemoryUploadedFile 类,该类将数据加载到内存中的某处并将其序列化为 Json 并不简单。我尝试寻找其他方式(如图像序列化程序示例)但无法解决此问题。

表格.py

class UploadDatasetForm(forms.Form):
docfile = forms.FileField(label='Choose file')

View .py
def test_upload(request):
if request.method == 'POST':
form = UploadDatasetForm(request.POST, request.FILES)
if form.is_valid():
in_file = request.FILES['docfile']
payload = {'doc_file': in_file}
msg = json.dumps(payload)
URL = 'http://localhost:8880/form'
r = requests.post(URL, data=msg)
return HttpResponse(json.dumps(r.text), content_type="application/json")

错误:
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <InMemoryUploadedFile: A_test.csv (text/csv)> is not JSON serializable

这里的任何帮助将不胜感激。非常感谢。

最佳答案

看起来您正在尝试序列化对 InMemoryUploadedFile 实例的引用 - 如果您只想 JSON 序列化数据而不是整个类实例,您可以读取数据。

代替:

payload = {'doc_file': in_file}


payload = {'doc_file': in_file.read()}

如果数据很大,请务必使用 chunks(): https://docs.djangoproject.com/en/1.11/ref/files/uploads/#django.core.files.uploadedfile.UploadedFile.chunks

关于json - 如何在 Django 中序列化(JSON)文件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45044691/

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