zoukankan      html  css  js  c++  java
  • 【DRF框架】序列化组件——字段验证

    单个字段的验证

    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,])             # 使用自定义验证器

    三者的权重:

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

  • 相关阅读:
    读Javascript MDN之闭包
    观察者模式小探
    javascript之克隆
    element-vue的简单使用
    页面加载海量数据
    手把手教你入门微信公众号开发
    ES6 Promise 用法讲解
    Javascript模块化编程(三):require.js的用法
    Javascript模块化编程(二):AMD规范
    Javascript模块化编程(一):模块的写法
  • 原文地址:https://www.cnblogs.com/st-st/p/10123318.html
Copyright © 2011-2022 走看看