User模型有很多功能,验证什么的,重写需要满足下面的功能(基本上写注释的地方都是需要的)

开始:

创建一个重写user的app, 记得注册app

startapp newauth

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager, User
# AbstractBaseUser封装了密码加密存储, PermissionsMixin封装了各种n对n关系,ex:user and permission class UserManager(BaseUserManager):
"""
实现User的 object功能
"""
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)
   # 创建超级用户
def create_superuser(self, telephone, username, password, **kwargs):
kwargs['is_superuser'] = True
return self._create_user(telephone, username, password, **kwargs) class User(AbstractBaseUser, PermissionsMixin):
"""
重写User模型
"""
telephone = models.CharField(max_length=11, unique=True)
username = models.CharField(max_length=50)
email = models.EmailField(unique=True)
is_active = models.BooleanField(default=True)
gender = models.IntegerField(default=0) # 0: 未知 1:男 2:女
data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' # authenticate进行验证的字段
REQUIRED_FIELDS = ['username'] # createsuperuser命令输入的字段,django默认要求输入密码,所以不需要指定password
EMAIL_FILED = 'email' # 指定发送邮箱 objects = UserManager() # 存入model中 def get_full_name(self):
return self.username def get_short_name(self):
return self.username

最后需要在settings申明使用改写的 User模型

# AUTH_USER_MODEL是django内置的属性,使用该属性去指定User模型
AUTH_USER_MODEL = 'xfzauth.User' # 重写的User模型

就可以makemigrates

migrate

映射表了

django-重写User模型的更多相关文章

  1. Django 重写用户模型

    AUTH_USER_MODEL = 'myapp.MyUser' django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身 ...

  2. Django重写用户模型报错has no attribute 'USERNAME_FIELD'

    目录 Django重写用户模型报错has no attribute 'USERNAME_FIELD' 在重写用户模型时报错:AttributeError: type object 'UserProfi ...

  3. django重写用户模型

    重写一个UserProfile继承自带的AbstractUser # -*- coding: utf-8 -*- from __future__ import unicode_literals fro ...

  4. django 重写用户模型 AbstractBaseUser

    https://blog.csdn.net/weixin_40744265/article/details/80745652

  5. Django之重写用户模型

    django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身份的标识可能更合理. 1.修改配置文件,覆盖默认的User模型 D ...

  6. Django学习系列之重写User模型和登录验证

    重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...

  7. python django -2 ORM模型

    ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...

  8. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  9. Django 应用程序 + 模型 + 基本数据访问

    如果你只是建造一个简单的web站点,那么可能你只需要一个app就可以了.如果是复杂的象 电子商务之类的Web站点,你可能需要把这些功能划分成不同的app,以便以后重用. 确实,你还可以不用创建app, ...

  10. Django框架3——模型

    Django数据库层解决的问题 在本例的视图中,使用了pymysql 类库来连接 MySQL 数据库,取回一些记录,将它们提供给模板以显示一个网页: from django.shortcuts imp ...

随机推荐

  1. 当前目录如何打开cmd

    前言 有时候需要在当前文件夹打开cmd控制台,直接从开始打开cmd进入当前目录比较麻烦,可以直接进入. 方法 按住键盘上Shift键的同时,在要操作的文件夹(DOS年代称为目录)上点击鼠标右键,在弹出 ...

  2. About DOM

    文档对象模型,简称DOM.是HTML页面结构给javascript提供的一个入口,它就像一个桥梁,连接两者的关系.通过DOM,JavaScript拥有访问并修改HTML的权限. 一.DOM模型: 首先 ...

  3. frameset的用法

    碰到一个frameset的问题,因为我比较懒,就先从网上拿来一篇基础知识,呵呵,好记性不如烂笔头啊        所谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESE ...

  4. CUDA H624解码性能测试

    测试环境: Cpu:       Inter(R)Core(TM)i7-4790 CPU @3.6GHZ GPU:         NVIDIA GeForce GTX960* 1 操作系统:   W ...

  5. 剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

    int [][] array ={ {1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,19} }; 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都 ...

  6. MySQL--修改MySQL账号密码

    ##使用mysqladmin进行修改 mysqladmin -u username -h hostname password 'new password'; ##使用set命令进行修改 SET PAS ...

  7. Codeforces Round #243 (Div. 2)——Sereja and Swaps

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012476429/article/details/24665103 题目链接 题意: 给定一个整数 ...

  8. 树莓派挂载和卸载U盘或移动硬盘

    通常我们在 /mnt 或 /media 目录下新建一个目录udisk作为挂载点 sudo mkdir /mnt/udisk 1.手动挂载: 挂载命令: sudo mount -o uid=pi,gid ...

  9. pthread中errors.h的代码

    #ifndef __errors_h #define __errors_h #include <unistd.h> #include <errno.h> #include &l ...

  10. Maven的dependency type属性

    官方地址: http://maven.apache.org/ref/3.5.2/maven-model/maven.html (搜索:Some examples are jar, war, ejb-c ...