码迷,mamicode.com
首页 > 其他好文 > 详细

【DRF框架】序列化组件——字段验证

时间:2018-12-15 14:54:18      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:nbsp   col   err   原因   cat   lse   category   attr   ali   

单个字段的验证

1.在序列化器里定义校验字段的钩子方法   validate_字段

2.获取字段的数据

3.验证不通过,抛出异常  raise serializers.ValidationError("校验不通过的说明")

4.验证通过,直接返回字段数据

# 对title字段进行验证
def validate_title(self,value):
    # 判断value是否含有敏感字段
    if "xx" in value:
        # 存在敏感字段,抛出异常并附上自定义的原因
        raise serializers.ValidationError("该字段含有敏感词")

    # 不存在,则直接返回
    return value

 

多个字段的验证

1.在序列化器定义validate方法

2.attrs是所有数据组成的字典

3.不符合抛出异常 raise serializers.ValidationError("校验不通过的说明")

# 对多个字段进行验证
def validate(self, attrs):
    # arrrs是数据组成的字典

    # 判断linux的数是否在linux分类
    if "linux" in attrs.get(title) and attrs[category_post] == 2:
        return attrs
    else:
        raise serializers.ValidationError("图书与分类不一致")

 

自定义验证器

使用:在字段添加   validators=[自定义验证器,]

# 自定义验证器
def my_validate(value):
    if "xxx" in value:
        raise serializers.ValidationError("该字段包含敏感词!!!")
    else:
        return value
title = serializers.CharField(max_length=32,validators=[my_validate,])             # 使用自定义验证器

 

三者的权重:

自定义验证器 > 单个字段的验证 > 多个字段的验证

 

【DRF框架】序列化组件——字段验证

标签:nbsp   col   err   原因   cat   lse   category   attr   ali   

原文地址:https://www.cnblogs.com/st-st/p/10123318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!