django用户信息扩展
用户认证相关的 功能放在django.contrib.auth的一个app当中,在INSTALLED_APPS中可以看到
生成的两张表,会从两张表中去查
扩展的信息不会加到request.user(session)里面去。
from django.contrib.auth.models import Userclass
Employee(models.Model):user = models.OneToOneField(User)
department = models.CharField(max_length=100)
生成用户表一张
扩展的信息会加到request.user(session)里面去。
权限机制也保存下来了
class profile_user(AbstractUser):phone = models.CharField(max_length=30)qq = models.CharField(max_length=30)class Meta:db_table = 'profile_user'
在User当中class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'所以采用继承的方式扩展用户字段需要在settings里面设置AUTH_USER_MODEL = 'log.User'因为就有两个User model 了,所以需要说明clas Meta:db_table = 'profile_user'定义了表的名字,不会在数据表当中加上额外的字段
#采用email方式注册用户,删除first_name与last_name,添加phone与qq字段
#这个时候可以继承基类,修改抽象类
class profile_user(AbstractBaseUser,PermissionsMixin):
email = models.EmailField(_('email address'), blank=True,unique = True) 这里需要添加unique,主键
is_staff = models.BooleanField(
_('staff status'),
default=False,
help_text=_('Designates whether the user can log into this admin site.'),
)
is_active = models.BooleanField(
_('active'),
default=True,
help_text=_(
'Designates whether this user should be treated as active. '
'Unselect this instead of deleting accounts.'
),
)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
objects = UserProfileManager() 这里要定义登录superuser的username帐号,superuser
USERNAME_FIELD = 'email' 这里定义存储帐号
REQUIRED_FIELDS = [] 这里是必须要的帐号
phone = models.CharField(max_length=30)
qq = models.CharField(max_length=30)
def get_full_name(self): 需要定义这里,改变登陆发方式后这里有所改变
"""
Returns the first_name plus the last_name, with a space in between.
"""
return self.email
def get_short_name(self):
"Returns the short name for the user."
return self.email
from django.contrib.auth.models import AbstractBaseUser,User,AbstractUser,\
UserManager,PermissionsMixin,BaseUserManager
from information.models import profile_user
# Register your models here.
admin.site.register(profile_user)
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
username = models.CharField(max_length=30, verbose_name='帐号')
class Meta:
verbose_name = '用户'
verbose_name_plural = verbose_name
像这种继承过来的,父类里面已经有username,子类就不能覆盖原有的username的字段了。
扩展用户信息的方式。要么继承的方式,要么关联的方式。

django用户信息扩展的更多相关文章
- Spring Security OAuth2.0认证授权五:用户信息扩展到jwt
历史文章 Spring Security OAuth2.0认证授权一:框架搭建和认证测试 Spring Security OAuth2.0认证授权二:搭建资源服务 Spring Security OA ...
- Laravel wxxcx 微信小程序获取用户信息
wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...
- Python学习---Django的request扩展[获取用户设备信息]
关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...
- 30、Django实战第30天:修改邮箱和用户信息
修改个人邮箱需要完成两个接口,一个是获取验证码,一个是新的邮箱和验证码是否匹配 1.编辑users.views.py class SendEmailCodeView(LoginRequiredMixi ...
- Django Auth组件->扩展用户
Auth用户 1.声明用户表 djangauth/settings.py..............................AUTH_USER_MODEL = 'app01.UserInfo' ...
- Django - 用户认证、用户组、用户权限
https://www.cnblogs.com/ccorz/p/6358074.html auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和a ...
- 【Python】Django用户、认证、鉴权模块使用
此文是总结Django官方网站里面的Document的文章 User authentication in Django http://www.djangoproject.com/documentati ...
- 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例
今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信 ...
随机推荐
- javascript (function() { /* code */ })() 自执行函数
(function(){ function a(){ alert("a"); } })(); 自执行匿名函数: 常见格式:(function() { /* code */ })() ...
- FreeMarker调用Java静态方法以及静态变量的方法
这里介绍下在类似 Spring+FreeMarker 的架构中如何在FreeMarker中访问Java中的静态方法以及静态变量. 一.首先为了方便以及可复用我们创建一个工具类 /** * FreeMa ...
- Android DRM
最近在了解Android DRM相关的一些知识,下面转一个ARM大佬分享的内容: 前言 本文简略地介绍了如何在Android下实现DRM(Digital Rights Management, 数字版权 ...
- Spring MVC Hibernate验证器
下面的示例演示如何使用Spring Web MVC框架在表单中使用错误处理和验证器. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web ...
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- java SAXReader
使用SAXReader需要导入dom4j-full.jar包. dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的JavaXML API,具 ...
- Classification week2: logistic regression classifier 笔记
华盛顿大学 machine learning: Classification 笔记. linear classifier 线性分类器 多项式: Logistic regression & 概率 ...
- PHP中MVC的编程思想浅谈
我相信这样的文章已经被写烂了,但是我今天还是愿意冒着风险把自己的经验与大家分享一下.纯属原创,我也没什么可保留,希望对新手有帮助,有说的什么不对的地方,欢迎大家伙吐槽. 什么是MVC? 简单的说就是将 ...
- Linux下汇编语言------计算n的阶乘
用高级语言比方C语言写个阶乘非常easy,那如今就来熟悉下Linux使用AT&T汇编格式写一个程序来计算阶乘吧 写法一是 使用跳转指令实现.写法二是使用函数来实现 约定:本程序没有将结果打印在 ...
- linux安装consul集群
一.集群规划 consul借助agent来运行,类似elk的logstash agent 或 zabbix监控系统的agent , 每个需要被发现的服务上,通过consul agent client ...