Django REST和request.data多值错误

Django REST和request.data多值错误,django,rest,dictionary,Django,Rest,Dictionary,我的问题与Django REST框架中的机制有关,在该机制中,我们可以通过调用request.data字典来获取请求数据。问题是我们什么时候读字典里没有的钥匙。当然,我们可以尝试检查request.data是否包含所需密钥,如下所示: if not 'time_begin' in request.data: raise APIException() 如您所见,若在所需密钥处并没有数据,Django REST Framework将通过响应API显示以下信息: { "detail"

我的问题与Django REST框架中的机制有关,在该机制中,我们可以通过调用request.data字典来获取请求数据。问题是我们什么时候读字典里没有的钥匙。当然,我们可以尝试检查request.data是否包含所需密钥,如下所示:

if not 'time_begin' in request.data:
    raise APIException()
如您所见,若在所需密钥处并没有数据,Django REST Framework将通过响应API显示以下信息:

{
    "detail": "A server error occurred."
} 
否则,如果我不使用if指令检查字典中键的存在性,我将出现以下预期错误:

MultiValueDictKeyError at /address/
"'time_begin'"
我的问题是:我可以不使用代码来检查密钥的存在吗?它很臭,不用吗?若我关闭Django调试,并且字典中并没有想要的密钥,服务器会响应HTTP500——所以在某些方面还可以。另一方面,如果我必须检查字典中的许多字段,我的代码会非常重复。你觉得怎么样


感谢您的帮助

500不是一个好的有意义的回答。你应该验证一切。为了保持干燥,可以创建帮助函数来解决一般问题。比如:

def validate_request(req, keys):
    for key in keys:
        if key not in request.data:
            raise APIException('request.data missing key "{}"'.format(key))
编辑:您必须处理异常并将验证错误返回到请求来自的任何地方。如果您试图实现RESTful,那么您可以使用任意消息,或者带有验证错误的JSON响应,等等。取决于您的用例