在Django Rest Framework(和Django)中,传统上我们检查validate_<field>方法中的字段,并在方法中进行更多的全局检查validate.
但是,请查看以下代码段:
def validate(self, data):
# ....
try:
customer.activate(data['signup_code'], data['raw_password'])
except BadCodeProvided:
raise ValidationError(MSG_WRONG_ACTIVATION_CODE)
except SomeOtherException:
raise ValidationError(SOME_OTHER_MESSAGE)
Run Code Online (Sandbox Code Playgroud)
在这里,我被迫使用validate方法,因为我使用2个字段进行验证(signup_code和raw_password).但是,如果BadCodeProvided Exception中发生错误,我知道它与signup_code字段(而不是raw_password字段)有关,因为此处引发了异常.
在上面的代码段中,thiw将创建一个"non_field_error".问题:DRF中是否存在引发相同错误但与"signup_code"字段相关的方法?(就像它将在一种validate_signup_code方法中完成).
谢谢
小智 9
你可以serializers.ValidationError在序列化器中使用:
raise serializers.ValidationError({"myField": "custom message error 1",
"myField2": "custom message error 1"})
Run Code Online (Sandbox Code Playgroud)
doc here Validator DRF