# 全局钩子 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