在 user 的应用中的 models.py:

导入 dango 自带的用户模型

from django.contrib.auth.models import AbstractUser,UserManager as _UserManager

在主目录下的配置文件中加入:
# 自定义用户模型
AUTH_USER_MODEL = 'users.Users'

查看类的结构:

查看类的继承关系,

用户模型设计 :

from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager as _UserManager class UserManager(_UserManager):
"""
define user manager for modifing 'no need email'
when 'python manager.py createsuperuser ' """ def create_superuser(self, username, password, email=None, **extra_fields):
super(UserManager, self).create_superuser(username=password,
password=password, email=email, **extra_fields) class Users(AbstractUser):
"""
add mobile、email_active fields to Django users models.
"""
objects = UserManager()
# A list of the field names that will be prompted for
# when creating a user via the createsuperuser management command.
REQUIRED_FIELDS = ['mobile'] # help_text在api接口文档中会用到
# verbose_name在admin站点中会用到
mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
error_messages={'unique': "此手机号已注册"} # 指定报错的中文信息
)
email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态') class Meta:
db_table = "tb_users" # 指明数据库表名
verbose_name = "用户" # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称 def __str__(self): # 打印对象时调用
return self.username

  

在settings.py文件中添加如下配置:

# 自定义用户模型

AUTH_USER_MODEL = 'users.Users'

这样就为 django 指定用自己的用户模型

查看数据库:

在这个项目中,不需要邮箱地址, 而在继承了这个类后,有个邮箱 地址的字段,有手机号字段,

所以要对模型进行修改,

继承并重写  UserManager

from django.db import models
from django.contrib.auth.models import AbstractUser,UserManager as _UserManager
#
# # Create your models here. class UserManager(_UserManager):
'''
重写 UserManager
'''
def create_superuser(self, username, password, email=None, **extra_fields):
super(UserManager, self).create_superuser(username=password,
password=password, email=email, **extra_fields) class Users(AbstractUser):
'''
在 AbstractUser 之上添加手机号字段
'''
objects = UserManager()
REQUIRED_FIELDS = ['mobile']
mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
error_messages={'unique': "此手机号已注册"} # 指定报错的中文信息
)
email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态') # 内部类
class Meta:
db_table = "tb_users" # 指明数据库表名
verbose_name = "用户" # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称 def __str__(self): # 打印对象时调用
return self.username

  

尝试 进行创建超级用户操作:  createsuperuser

补充:

对 base.html 文件中的路径对应修改:

潭州课堂25班:Ph201805201 django 项目 第七课 用户模型设计 (课堂笔记的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)

    登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...

  2. 潭州课堂25班:Ph201805201 django 项目 第五课 静态页面转为模板 (课堂笔记)

    一.分析静态页面   1.静态vs动态 条目 静态页面 动态页面 网站内容 固定不变 经常变动 浏览器加载速度 更快(无需向服务器发起请求) 更慢 改变网站内容 很难(修改或者创建新的html页面) ...

  3. 潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)

    新闻列表页功能 1.分析 业务处理流程: 判断前端传的标签分类id是否为空,是否为整数.是否超过范围 判断前端传的当前文章页数是否为空,是否为整数.是否超过范围 请求方法:GET url定义:/new ...

  4. 潭州课堂25班:Ph201805201 django 项目 第十课 自定义错误码,完成图片验证码,用户是否被注册功能 (课堂笔记)

    把 视图传到前台的  JsonResponse(data=data) 先进行处理,之后再传到前台, 处理:引用自定义错误代码,把错误代码返回给前台,前台根据错误代码中文提示 class Code: O ...

  5. 潭州课堂25班:Ph201805201 django 项目 第四课 项目搭建 课堂笔记)

    创建一用户,授予对这个 myblog 库的所有表的权限(.*),在任何 ip 地址中访问(@“%”), 刷新: 退出,用新创建的用户登录,并进入这个库, 在昨天创建的项目中,配置文件中 为了数据库的案 ...

  6. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)

    d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过  git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目  p ...

  7. 潭州课堂25班:Ph201805201 django 项目 第二十七课 docker简介,配置文件 (课堂笔记)

    新闻搜索功能实现 一.docker介绍 1.什么是docker? 使用容器让创建.部署.运行应用程序更简单的一个工具 让应用所需的库和依赖环境打包 有一点点像虚拟机 2.为什么使用docker? 3. ...

  8. 潭州课堂25班:Ph201805201 django 项目 第十三课 短信验证码后台的实现 (课堂笔记)

    d 发送短信验证码之前,后台要得到三个参数 : 1,用户手机吗,, 2,用户输入的图片验证文本, 3,前台的 uuid , 在60秒内是否有发送短信的记录 只有用户输入的手机号,文本信息与 uudi ...

  9. 潭州课堂25班:Ph201805201 django 项目 第十一课 手机号是否存在,短信验证分析 (课堂笔记)

    判断手机号是否注册功能实现 1.分析 请求方法:GET url定义:/mobiles/(?P<mobile>1[3-9]\d{9})/ 请求参数:url路径参数 参数 类型 前端是否必须传 ...

随机推荐

  1. Python列表、元组、字典和集合的区别

    数据结构 是否可变 是否重复 是否有序 定义符号 列表(list) 可变 可重复 有序 [] 元组(tuple) 不可变 可重复 有序 () 字典(dictionary) 可变 可重复 无序 {key ...

  2. CPU虚拟化

    1. 为什么需要 CPU 虚拟化 X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件.x86 架构提供四个特权级别给操作系统和应用程序来访问硬件.  Ring 是 ...

  3. springboot拦截器HandlerInterceptor详解

    Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截器). HandlerInterceptor 的功能跟过滤器类似,但 ...

  4. 前端面试题集锦及答案解析--HTML、 HTTP、web综合问题

    前端需要注意哪些SEO 合理的title.description.keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有 ...

  5. Tomcat8 启动慢 Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [53,161] milliseconds

    修改$JAVA_PATH/jre/lib/security/java.security文件 将 securerandom.source=file:/dev/random 修改为 securerando ...

  6. openCV 备忘

    yum install python-devel numpy cmake gcc gcc-c++yum install gtk2-devel libdc1394-devel libv4l-devel ...

  7. kickstart-E

    A题 简答模拟题 #include <iostream> #include<stdio.h> #include <set> #include <algorit ...

  8. [arc066f]Contest with Drinks Hard

    题目大意: 有一些物品,每个买了有代价. 如果存在一个极大区间[l,r]内的物品都被买了,这个区间长度为k,可以获得的收益是k*(k+1)/2. 现在若干次询问,每次问假如修改了某个物品的价格,最大收 ...

  9. 【C#】WebApi 添加过滤器,实现对请求参数和响应内容的日志记录

    filter的介绍 filter在Web API中经常会用到,主要用于记录日志,安全验证,全局错误处理等:Web API提供两种过滤器的基本类型:actionfilterattribute,excep ...

  10. Flink--sink到kafka

    package com.flink.DataStream import java.util.Properties import org.apache.flink.api.common.serializ ...