【发布时间】:2015-11-17 16:20:08
【问题描述】:
我正在查看文档,但我可能遗漏了一些东西。如果我想接收request 数据中的某些字段,我该如何定义它们?如果完整的字段不在request 的数据中,我想避免执行POST 或GET 方法。
例子:
我需要接收(应用程序/json):
{
"city": "Port Orange",
"state": "FL",
"formatted_address": "Peach Blossom Blvd 5329",
"_zip": "32128"
}
但如果我只得到一个
{
"city": "Port Orange",
"state": "FL",
"formatted_address": "Peach Blossom Blvd 5329"
}
我想返回一个带有错误消息 400 Bad Request 的响应。但不执行POST 方法。我怎么能这样做?
附言。我正在使用APIView
【问题讨论】:
-
我可以使用
request.body访问dispatch方法中的JSON字符串 -
是的,但它是一个字符串,而不是一个字典。但我想我可以试一试。
-
执行 json.loads(json_string) 使其成为 Python 字典。
-
正如您在我之前的一个问题(之前在 cmets 中链接)中看到的那样,我意识到,我会试一试并让您知道。
-
@Gocht 您可以将
_zip字段添加到您的序列化程序。如果请求中未提供该字段,则序列化程序将失效并自动返回 400 响应。
标签: django django-rest-framework