【Django】——继承自带的用户模型类

1、打开pycharm终端——进入apps目录——创建子应用users

django-admin startapp users

2、配置文件注册子应用,子应用新建urls.py文件,内层目录super_mall下的主路由中映射子路由
【Django】——继承自带的用户模型类_第1张图片
【Django】——继承自带的用户模型类_第2张图片
3、用户模块操作
3.1、用户模型类自定义
注意:由于我们需要使用Django的身份认证等功能,所以在自定义用户模型类的时候,必须继承自AbstactUser用户模型基类

  • 3.1.1、编辑apps/users/models.py文件自定义用户模型类:
# 我们重写用户模型类, 继承自 AbstractUser
class User(AbstractUser):
    """自定义用户模型类"""

    # 额外增加 mobile 字段      长度11位        号码唯一        别名
    mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号')

    # 对当前表进行相关设置: 
    class Meta:
        db_table = 'tb_users'

    # 在 str 魔法方法中, 返回用户名称
    def __str__(self):
        return self.username
  • 3.1.2、在super_mall/settings/dev.py配置文件中指定自定义的用户模型类:
# BASE_DIR这里指向的是工程的内层目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# sys.path是一个列表,该列表里面的所有的路径都是导包查找路径
# 我只需要把apps文件夹的路径加入这个列表中,就可以直接导入apps里面的应用
sys.path.insert(
    0,
    os.path.join(
        # 取内层目录的目录即外层目录和apps文件夹拼接,并加入导包路径列表sys.path中
        os.path.dirname(BASE_DIR), 'apps'
    )
)

# 指定自定义的用户模型类
AUTH_USER_MODEL = 'users.User'
  • 3.1.3、[补充]Django的用户莫模型基类提供的方法

  • User.set_password() 设置密码

  • User.check_password() 校验明文密码

  • User.objects.create() 新建User对象,但是密码不会加密

  • User.objects.create_user() 新建User对象,并且自动加密密码

  • User.objects.create_superuser() 新建User对象,并且自动加密密码,并且是一个管理员is_staff=True

  • make_password(xxx)也可以将密码xxx设置为秘文

3.2、用户名重复注册判断

  • 快速在mysql数据库创建一个用户账号python3 manage.py createsuperuser
(django_env) python@ubuntu:~/Desktop/super_mall_project/super_mall$ python3 manage.py createsuperuser
Username: zhangsan
Email address: 1@11.com
Password: 
Password (again): 
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
(django_env) python@ubuntu:~/Desktop/super_mall_project/super_mall$ 


你可能感兴趣的:(Django)