django restframework 钩子函数:全局钩子和局部钩子

    # 全局钩子
    def validate(self, attrs):
        res=re.match(r'^1[35678]d{9}$',attrs.get('user_name'))
        if not res:
            raise ValidationError({"user_name":'名字必须合法手机号'})
        return attrs
    # 局部钩子hook,先验证局部钩子----->在验证全局钩子,体现面向对象思想
    def validate_password(self, value):
        symbol=r'^(?=.*?d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[W]).{6,8}$'
        if not re.match(symbol,value):
            raise ValidationError('密码至少6位数,最多8位且包含大小写字母数字,特殊符号(不包含下划线)')
        return value
原文地址:https://www.cnblogs.com/SunshineKimi/p/13831712.html