目录
一、创建用户表
二、在admin中设置展示内容
三、在settings文件中指定用于用户认证的数据库表类
django自定义用户认证(使用自定义的UserProfile,而不是django自带的),就需要(django要求)将为UserProfile单独创建一个app,这个app啥也不干,就是为UserProfile而生的;
这里我们创建一个app,名字叫做custom_auth,事实上,我们只需要对其中的models文件和admin.py做操作就可以了;
第一步:创建user model
下面是models.py文件的内容
1 from django.utils.safestring importmark_safe2 from django.db importmodels3 from django.contrib.auth.models import(4 BaseUserManager, AbstractBaseUser,PermissionsMixin5 #BaseUserManager 用户管理基类,用于创建用户
6 #AbstractBaseUser 抽象类,声明一些必须字段,不会自己生产表,继承的子类才会,主要内容:class Meta abstract=True
7 #PermissionMixin 权限管理类,也是抽象类
8 )9
10 class UserProFileManager(BaseUserManager): #用于创建用户,需要在settings文件中声明
11 def create_user(self, email, name, password=None):12 """
13 Creates and saves a User with the given email, name and password.14 """
15 if notemail:16 raise ValueError('Users must have an email address')17
18 user =self.model(19 email=self.normalize_email(email),20 name=name,21 )22
23 user.set_password(password)24 user.save(using=self._db)25 returnuser26
27 defcreate_superuser(self, email, name, password):28 """
29 Creates and saves a superuser with the given email, name and password.30 """
31 user =self.create_user(32 email,33 password=password,34 name=name,35 )36 user.is_superuser =True37 user.save(using=self._db)38 returnuser39
40 classUserProFile(AbstractBaseUser,PermissionsMixin):41 email =models.EmailField(42 verbose_name='email address',43 max_length=255,44 unique=True,45 blank=True,46 null=True47 )48 password =models.CharField(49 verbose_name='password',50 max_length=128,51 h