在 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. Docker快速部署gitlab

    环境: Centos7.5 安装Docker 1.移除旧版本: $ sudo yum remove docker \ docker-client \ docker-client-latest \ do ...

  2. Install zeal on ubuntu16.04

    Dash is a helpful software for macOS users. For Windows and Linux users, zeal is the open-source cou ...

  3. java 解析域名得到host

    // 形如https://www.baidu.com 或 www.baidu.com, 判断这两种情况,并解析前者去掉http头,传入domain host // 方案1:正则表达式 + URI解析方 ...

  4. hadoop集群运行jps命令以后Datanode节点未启动的解决办法

    出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而da ...

  5. java的局部变量和成员变量以及区别

    一.局部变量 存在某个方法中的变量就叫局部变量,局部变量一旦声明就必须赋值 否则不能使用 代码如下: class Person { String name; char sex; int age; pu ...

  6. C# 之 比较两个word文档的内容

    利用 Microsoft.Office.Interop.Word 组件进行比较.引入命名空间:using Word2013 = Microsoft.Office.Interop.Word; 代码如下: ...

  7. 本地化KendoUI

    <!doctype html> <html>     <head>         <title>Kendo UI Web</title> ...

  8. Mac mumu模拟器设置代理

    adb devices adb connect 127.0.0.1:5555 adb shell am start -a android.intent.action.MAIN -n com.andro ...

  9. net core体系-API-1Ocelot-(2)继续深入

    简单的说Ocelot是一个用.NET Core实现并且开源的API网关技术.可能你又要问了,什么是API网关技术呢?Ocelot又有什么特别呢?我们又该如何集成到我们的asp.net core程序中呢 ...

  10. 学习Spring必须了解的基础知识——回调机制

    上面这张图如果能看得懂就能理解什么是回调机制: A对象在调用a()方法时会调用B对象的b()方法,b()方法必须能调用A对象的callback()方法. 谁白了:a()方法有B对象b()方法的引用,b ...