drf 序列化 校验
序列化器Serializer
class DepartSerializer(serializers.Serializer):
name = serializers.CharField(required=True, max_length=3, min_length=2)
age = serializers.IntegerField(required=True, max_value=99, min_value=14)
gender = serializers.ChoiceField(choices=((1, 'MALE'), ("2", 'FEMale')))
# email = serializers.EmailField()
from django.core.validators import RegexValidator, EmailValidator
email = serializers.CharField(validators=[EmailValidator(message='邮箱格式错误')])
other = serializers.CharField(validators=[RegexValidator('填写正则', message='错误信息')])
def validate_name(self, value):
if value != 'szw':
raise exceptions.ValidationError('字段钩子校验失败')
return value
def validate(self, attrs):
print(attrs)
raise exceptions.ValidationError('全局钩子校验失败')
序列化器ModelSerializer
class DepartSerializer(serializers.ModelSerializer):
class Meta:
model = models.Depart
fields = '__all__'
extra_kwargs = {
"name": {"max_length": 3, "min_length": 2},
"gender": {"choices": ((1, 'MALE'), ("2", 'FEMale'))},
"email": {"validators": [EmailValidator(message='邮箱格式错误')]}
}
def validate_name(self, value):
if value != 'szw':
raise exceptions.ValidationError('字段钩子校验失败')
return value
def validate(self, attrs):
print(attrs)
raise exceptions.ValidationError('全局钩子校验失败')
settings
REST_FRAMEWORK = {
# 全局校验钩子抛出异常的key
"NON_FIELD_ERRORS_KEY": "EXTRA"
}
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16757000.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步