DRF给出的默认验证错误消息是密钥和消息的列表。将此格式自定义为文本格式的最佳方法是什么?例如。
这是默认格式。
{
"message": {
"phone": [
"customer with this phone already exists."
],
"email": [
"customer with this email already exists."
],
"tenant_id": [
"customer with this tenant id already exists."
]
},
"success": false,
"error": 1
}
这是我想要的东西。
{
"message": "customer with this phone already exists, customer with this
email already exists, customer with this tenant id already exists"
"success": false,
"error": 1
}
3条答案
按热度按时间u3r8eeie1#
为了回答这个问题,我做了一个类似于重写djangorest framework默认异常处理程序的过程。
我认为这是一个原因,如果我是正确的,Django的休息使每个字段的错误列表(不确定)。我想也许有时一个字段可能碰巧有一个以上的错误,但我最终定制它,所以如果它只是一个字段的错误,你将有自定义,否则多个错误的列表。
最后,用点表示法将此函数的路径添加到settings.py(rest_framework settings context),如下所示
在我的例子中,我在与设置相同的包目录中的模块中创建了函数。
例如:对于用户已经存在和电子邮件已经存在,你应该得到一个响应
happy hacking:)
iqjalb3h2#
通常的做法是显示各个字段的验证消息,而不是提供单个常规消息。因此,DRF的默认行为遵循此约定。
要实现您想要的,您需要为您的序列化器www.example.com创建对象级验证http://www.django-rest-framework.org/api-guide/serializers/#object-level-validation,并防止字段验证的默认行为。
6l7fqoea3#
你可以根据你的表单在视图中修改你的错误,在你给予响应序列化器的时候。你可以把你自己的字典传递给