django自定义user认证系统
第一种,彻底推翻django的user认证系统,重新定义我们想要的字段
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager from shortuuidfield import ShortUUIDField from django.db import models from django.contrib.auth.models import User from django.contrib.auth.models import AbstractUser class UserManager(BaseUserManager): def _create_user(self,telephone,password,grade,**kwargs): if not telephone: raise ValueError('请输入电话号码') if not password: raise ValueError('请输入密码') if not grade: raise ValueError('请选择班级') user = self.model(telephone=telephone,password=password,**kwargs) return user def create_user(self,telephone,password,grade,**kwargs): kwargs['is_superuser'] = False kwargs['is_staff'] = False return self._create_user(telephone,password,grade,**kwargs) def create_superuser(self,telephone,password,grade,**kwargs): kwargs['is_superuser'] = True kwargs['is_staff'] = True return self._create_user(telephone, password, grade, **kwargs) class User(AbstractBaseUser,PermissionsMixin): email = models.EmailField(unique=True) username = models.CharField(max_length=150) telephone = models.CharField(max_length=11,unique=True) is_active = models.BooleanField(default=True) USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = [] objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
第二种,在django自带的user认证系统中添加自己想要的字段
from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager from shortuuidfield import ShortUUIDField from django.db import models from django.contrib.auth.models import User from django.contrib.auth.models import AbstractUser class UserManager(BaseUserManager): use_in_migrations = True def _create_user(self,telephone,password,school,**extra_fields): if not telephone: raise ValueError('请填写手机号码') if not password: raise ValueError('请填写密码') user = self.model(telephone=telephone, school=school,**extra_fields) user.set_password(password) user.save() return user def create_user(self,telephone,password, school,**extra_fields): extra_fields.setdefault('is_superuser',False) extra_fields.setdefault('is_staff',False) return self._create_user(telephone=telephone,password=password,school=school,**extra_fields) def create_superuser(self,telephone,password, school,**extra_fields): extra_fields.setdefault('is_superuser', True) extra_fields.setdefault('is_staff', True) return self._create_user(telephone=telephone,password=password,school=school,**extra_fields) class User(AbstractUser): telephone = models.CharField(max_length=11,unique=True) school = models.CharField(max_length=20) objects = UserManager() USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = []
django自定义user认证系统的更多相关文章
- Django自定义用户认证系统之自定义用户模型
参考文档:http://python.usyiyi.cn/django/topics/auth/customizing.html Django 自带的认证系统足够应付大多数情况,但你或许不打算使用现成 ...
- Django自定义用户认证系统Customizing authentication
扩展已有的用户模型Extending the existing User model 有两种方法来扩展默认的User Model而不用重写自己的模型.如果你不需要改变存储在数据库中的字段,而只是需要改 ...
- Django组件之认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Dja ...
- django之auth认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- 将Python的Django框架与认证系统整合的方法
将Python的Django框架与认证系统整合的方法 这篇文章主要介绍了将Python的Django框架与认证系统整合的方法,包括指定认证后台和编写认证后台等内容,需要的朋友可以参考下 将Django ...
- django(权限、认证)系统——自定义UserProfile储存User额外信息
上篇文章我们引出了Django内置的权限控制系统,讲了安装,和最核心和基本的User模型的API和其Manager的API. 接下来我们继续深入下去,使用User对象做一些事情,首先当然就是创建一个U ...
- CMDB资产管理系统开发【day25】:Django 自定义用户认证
官方文档:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-mode ...
- Django Authentication 用户认证系统
一. Django的认证系统 Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. 1.1 概览 Django的认证系统包含了身份验证和权限管理两部分.简单地说 ...
- django 自定义身份认证
自定义身份认证: Django 自带的认证系统足够应付大多数情况,但你或许不打算使用现成的认证系统.定制自己的项目的权限系统需要了解哪些一些关键点,即Django中哪些部分是能够扩展或替换的.这个文档 ...
随机推荐
- Maven下CXF的wsdl2java生成客户端代码
<plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin< ...
- script 写在body和head的区别(WEUI中使用swiper删除)
区别简述: 在HTML body部分中的JavaScripts会在页面加载的时候被执行.在HTML head部分中的JavaScripts会在被调用的时候才执行. JavaScript应放在哪里 ...
- Docekr 挂在卷之后访问目录时异常 cannot open directory '.': Permission denied 的解决办法
1,原因,原因是CentOS7 中的安全模块 selinux 把权限禁掉了 2,解决办法如下 2.1,运行容器是加参数在 --privileged=true (个人认为这是最佳方式,推荐使用) 如 ...
- ssh服务器配置
使用如下终端命令可以在 Linux 主机中安装 ssh服务器sudo apt-get install openssh-server lin@lin-machine:~$ sudo apt-get in ...
- django不定义model,直接执行自定义SQL
如果不想定义model,直接执行自定义SQL,可如下操作: 1. 通过 connections获取db连接,如果是多个数据库,connections['dbName'] 来选择 2. 获取游标 cur ...
- JRebel 代理激活
1.生成GUID https://www.guidgen.com/ 例:04cfff79-8f45-481c-a858-a5b9590422e7 2.License Server 例: http: ...
- Beta冲刺——第三天
beta冲刺:第三天 各个成员今日完成的任务 成员 冯晓.马思远 彭辉.王爽 吴琼.郝延婷 今日完成任务 ·管理员管理功能模块下角色管理功能的完善测试 ·角色和权限部分代码规范 ·博客撰写 ·后台系统 ...
- js中的数据类型有
- 退出vim编辑器(转)
在linux家族中,vim编辑器是系统自带的文本编辑器,其功能强大自不必说了. 偶有小白,刚接触linux,要修改某个文本文件,不可能像WINDOWS那样操作,更有甚者,进入VI编辑器后,无法退出以致 ...
- 关于ie6块元素行内元素转换
1.inline元素的display属性设置为inline-block时,所有的浏览器都支持: 2.block元素的display属性设置为inline-block时,IE6/IE7浏览器是不支持的: ...