我在我的序列化器之一中有一个自定义对象级验证器:
def validate(self, data):
# some checks on token
# set token to True or False
if not token:
raise serializers.ValidationError(
{
"status": "failed",
"message": _("token is not valid"),
}
)
return data
我期望得到的输出是这样的:
{
"status": "failed",
"message": "token is not valid"
}
但是,我实际得到的是:
{
"status": [
"failed"
],
"message": [
"token is not valid"
]
}
有什么办法可以实现我想要的吗?
最佳答案
创建自定义ValidatorError
类:
from rest_framework import serializers, status
from rest_framework.exceptions import APIException
class PlainValidationError(APIException):
status_code = status.HTTP_400_BAD_REQUEST
default_detail = _("Invalid input.")
default_code = "invalid"
def __init__(self, detail=None, code=None):
if not isinstance(detail, dict):
raise serializers.ValidationError("Invalid Input")
self.detail = detail
不要使用 serializers.ValidationError
,而是使用自定义 ValidationError
类:
def validate(self, data):
# some checks on token
# set token to True or False
if not token:
raise PlainValidationError(
{
"status": "failed",
"message": _("token is not valid"),
}
)
return data
它并不完美,但它适合我。
关于django-rest-framework - 序列化器 ValidationError 的自定义格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71345107/