重新定义的用户模型 ,再model.py中编写 继承的AbstractBaseUser,PermissionsMixin的这两个类
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager
#AbstractBaseUser
#PermissionsMixin
class UserManager(BaseUserManager):
def _create_user(self,telephone,username,password,**kwargs):
user = self.model(telephone=telephone, username=username, **kwargs)
user.set_password(password)
user.save()
return user
#创建用户
def create_user(self,telephone,username,password,**kwargs):
kwargs['is_superuser']=False
return self._create_user(telephone,username,password,**kwargs)
# user = self.model(telephone=telephone,username=username,**kwargs)
# user.set_password(password)
# user.save()
# return user
def create_superuser(self,telephone,username,password,**kwargs):
kwargs['is_superuser']=True
return self._create_user(telephone, username, password, **kwargs)
# user = self.model(telephone=telephone,username=username,**kwargs)
# user.set_password(password)
# user.save()
# return user
#User MODEL 继承两个类 ,用这个模型来进行
class User(AbstractBaseUser,PermissionsMixin):
telephone = models.CharField(max_length=11,unique=True) #手机号码唯一
username = models.CharField(max_length=100)
email = models.EmailField(unique=True) #唯一
is_active = models.BooleanField(default=True) #是否被激活
gender = models.IntegerField(default=0) #0 未知 ,1 男人 ,2 女生
data_join= models.DateTimeField(auto_now_add=True) #添加的时间
USERNAME_FIELD ='telephone' #验证时间的字段
#这个命令再使用createsuperuser 让你输入的字段
REQUIRED_FIELDS = ['username']
#以后给某个用户发送邮件的时间就使用这个指定的字段
EMAIL_FIELD='email'
#需要使用objects对象
objects = UserManager()
def get_full_name(self):
return self.username
def get_short_name(self):
return self.username
AbstractBaseUser 这个类中,我们可以看到有密码 ,最近的一次登陆等 ,密码我们尽量还用原来的加密方式
class AbstractBaseUser(models.Model):
password = models.CharField(_('password'), max_length=128)
last_login = models.DateTimeField(_('last login'), blank=True, null=True)