gpt4 book ai didi

python - Django Rest Framework 拒绝接受多部分表单数据

转载 作者:太空狗 更新时间:2023-10-30 01:05:47 26 4
gpt4 key购买 nike

我正在尝试发布包含嵌套 json、图像和其他数据的数据。 json 看起来像这样:

{
"id": ,
"venue": {
"id": ,
"name": "",
"city": "",
"address": "",
"rating": null,
"point": null
},
"name": "",
"time": "",
"event_pic": null,
"description": "",
"event_type": "Movie",
"invite_only": ,
"free": ,
"age_restriction": ,
"ticket_price": ,
"user":
}

我遇到了一个问题,出于某种原因,如果我尝试使用多部分表单上传,我会收到如下错误消息:

Request http://zacmwa.pythonanywhere.com/api/events/ (7417ms)
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Server: openresty/1.9.15.1
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Date: Tue, 14 Feb 2017 13:21:26 GMT
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Content-Type: application/json
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Transfer-Encoding: chunked
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Connection: keep-alive
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Vary: Accept
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: X-Frame-Options: SAMEORIGIN
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: Allow: GET, POST, OPTIONS
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: {"venue":["This field is required."]}
02-14 16:21:26.468 7133-7762/com.wyat.wyat D/OkHttp: <-- END HTTP (37-byte body)

它说 {"venue":["This field is required."]} 并向我发送 400 Bad Request。

当我从 Postman 发送时,我无法以多部分形式发送,但是当我使用 application/json header 时,我能够解决这个问题。但是,当我使用 application/json 时,我无法发送图像。

为什么它没有看到正在发送的json对象?DRF要如何发送嵌套对象?

在可浏览的 api 表单中,我可以轻松创建嵌套的 json 对象和图像,而无需更改任何内容。我如何为其他客户执行此操作?

最佳答案

TL;DR:你还不能那样做。

更长的版本:

您无法将开箱即用的图像与 JSON 一起发送。 Multipart 不支持 JSON(参见 https://github.com/tomchristie/django-rest-framework/issues/4881)。

另一种方法是将表单与图像一起使用,但是表单目前不支持嵌套数据。

在 JSON 中发送的 base 64 编码图像可能有一些解决方法,但我没有玩过这些,所以我不能说它是否是一个好的选择。

PS:您的问题是因为它以编码形式发送数据。由于它不支持嵌套数据,它会提示您的字段不工作。

关于python - Django Rest Framework 拒绝接受多部分表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253788/

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