django-重写User模型
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模型的更多相关文章
- Django 重写用户模型
AUTH_USER_MODEL = 'myapp.MyUser' django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身 ...
- Django重写用户模型报错has no attribute 'USERNAME_FIELD'
目录 Django重写用户模型报错has no attribute 'USERNAME_FIELD' 在重写用户模型时报错:AttributeError: type object 'UserProfi ...
- django重写用户模型
重写一个UserProfile继承自带的AbstractUser # -*- coding: utf-8 -*- from __future__ import unicode_literals fro ...
- django 重写用户模型 AbstractBaseUser
https://blog.csdn.net/weixin_40744265/article/details/80745652
- Django之重写用户模型
django——重写用户模型 Django内建的User模型可能不适合某些类型的项目.例如,在某些网站上使用邮件地址而不是用户名作为身份的标识可能更合理. 1.修改配置文件,覆盖默认的User模型 D ...
- Django学习系列之重写User模型和登录验证
重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...
- python django -2 ORM模型
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
- python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...
- Django 应用程序 + 模型 + 基本数据访问
如果你只是建造一个简单的web站点,那么可能你只需要一个app就可以了.如果是复杂的象 电子商务之类的Web站点,你可能需要把这些功能划分成不同的app,以便以后重用. 确实,你还可以不用创建app, ...
- Django框架3——模型
Django数据库层解决的问题 在本例的视图中,使用了pymysql 类库来连接 MySQL 数据库,取回一些记录,将它们提供给模板以显示一个网页: from django.shortcuts imp ...
随机推荐
- 【计算机视觉】交并比IOU概念理解
前言 交并比IOU(Intersection over Union)是一种测量在特定数据集中检测相应物体准确度的一个标准. 图示 很简单,IoU相当于两个区域重叠的部分除以两个区域的集合部分得出的结果 ...
- Elasticsearch 索引的全量/增量更新
Elasticsearch 索引的全量/增量更新 当你的es 索引数据从mysql 全量导入之后,如何根据其他客户端改变索引数据源带来的变动来更新 es 索引数据呢. 首先用 Python 全量生成 ...
- Appium笔记(一) 丶Appium的自我介绍
一.我是谁,我的特点是什么 Appium是一款开源测试自动化框架,可用于原生.混合和移动Web应用程序.它使用WebDriver协议驱动iOS,Android和Windows应用程序.重要的是,App ...
- hdu5229
bc41第二题: 题意:两个人有 n 个串,随机选出两个串,可以进行这样的操作:①选一个串消去最后一个字符,②若两串相同则可以全部消去两串 若到某个人时正好消去两个串,则这个人胜另一人负,问先手胜概率 ...
- 【mysql】修改数据时候,抛出safe mode相关错误,处理方法
在mysql5中,可以设置safe mode,比如在一个更新语句中 UPDATE table_name SET bDeleted=0; 执行时会错误,报: You are using safe upd ...
- day27 python学习 logging
logging模块 函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging ...
- socat 广播以及多播
官方文档有一个关于组播,多播的例子挺不错,记录下 多播客户端以及服务器 注意地址修改为自己的网络 server socat UDP4-RECVFROM:6666,ip-add-membership=2 ...
- php利用curl获取网页title内容
/**$html = curl_get_file_contents($url); $title = get_title_contents($html); var_dump($title);*/ fun ...
- Python学习系列(一)(基础入门)
Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频 ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境
1.资源准备 最近,在VmwareStation 10虚拟机上,基于CentOS5.4安装Oracle 11g RAC,并把过程记录下来.刚开始时,是基于CentOS 6.4安装Oracle 11g ...