我什么时候应该在 Django Rest Framework 序列化程序中使用 ParseError 与 Validat



使用 Django Rest 框架,在序列化程序中验证表单数据时,我应该在什么时候提出ParseErrorserializers.ValidationError

我的代码看起来像这样:

class UserSerializer(serializers.ModelSerializer):
def create(self, validated_data):
if  'username' not in validated_data:
raise ParseError({'username': ['A username is required.']})
if  'password' not in validated_data:
raise ParseError({'password': ['A password is required.']})
if  'email' not in validated_data or len(validated_data['email']) == 0:
raise ParseError({'email': ['An email is required.']})
if UserModel.objects.filter(email=validated_data['email']):
raise ParseError({'email': ['A user with that email already exists.']})
# ...

如果有的话,应该serializers.ValidationError其中哪一个?将来我应该遵循什么规则来确定使用哪个?

来自DRF 文档ParseError

如果请求在访问request.data时包含格式不正确的数据,则会引发ParseError

通常,这由 DRF 本身处理。因此,您不必明确提出它。 在您的情况下,所有条件都在"验证错误"部分下。因此,使用ValidationError而不是ParseError更合适。


注意:强烈建议在 Django RESTFramework 中使用validate(...)方法进行对象级验证,validate_<field_name>(...)方法进行字段级验证(在 DRF 中处理create或任何其他方法的验证并不好(

最新更新