zac*_*mwa 5 python django json django-rest-framework
我正在尝试发布具有嵌套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":
}
Run Code Online (Sandbox Code Playgroud)
我遇到了一个问题,由于某种原因,如果我尝试使用分段表单上传,则会收到如下错误消息:
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)
Run Code Online (Sandbox Code Playgroud)
它显示{“ venue”:[“必填字段。”]},并向我发送了400错误请求。
当我从邮递员发送邮件时,无法以多部分形式发送邮件,但是当我使用application / json标头时,我可以解决此问题,但是当使用application / json标头时,我无法发送图像。
为什么没有看到json对象被发送?DRF如何希望发送嵌套对象?
以可浏览的api形式,我可以轻松创建嵌套的json对象和图像,而无需进行任何更改。如何为其他客户执行此操作?
TL;DR:你还不能这么做。
更长的版本:
您无法将图像与开箱即用的 JSON 一起发送。Multipart 不支持 JSON(参见https://github.com/tomchristie/django-rest-framework/issues/4881)。
另一种方法是使用表单和图像,但表单目前不支持嵌套数据。
在 JSON 中发送的 Base 64 编码图像可能有一些解决方法,但我还没有使用过这些方法,所以我不能说这是否是一个好的选择。
PS:您的问题是因为它以表单编码的形式发送数据。由于它不支持嵌套数据,它会抱怨您的字段不起作用。
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |