django mysql数据库使用自己的User
由于我需要的User模型与django自带的User有所不同,所以需要定义自己的User Model,这里记录一下方法,适用于django 1.5+。
因为使用自己的后台,放弃django的管理后台,所以无需在admin.py中注册。
定义MyUserManager和MyUser
修改myapp下的models.py文件:
from django.db import modelsfrom django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser, PermissionsMixin)
class
MyUserManager(BaseUserManager):
def
_create_user(self, username, email, password, **extra_fields):
"""
Creates
and saves a User with the given username, email and password.
"""
ifnot
username:
raise
ValueError('The given username must be set')
email
= self.normalize_email(email)
user
= self.model(username=username, email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return
user
def
create_user(self, username, email, password, **extra_fields):
extra_fields.setdefault('is_staff',
False)
return
self._create_user(username, email, password, **extra_fields)
def
create_superuser(self, username, email, password, **extra_fields):
extra_fields.setdefault('is_staff',
True)
if
extra_fields.get('is_staff')
isnotTrue:
raise
ValueError('Superuser must have is_staff=True')
return
self._create_user(username, email, password, **extra_fields)
class
MyUser(AbstractBaseUser, PermissionsMixin):
username
= models.CharField(max_length=254,
unique=True,
db_index=True)
email
= models.EmailField('email address',
max_length=254)
is_staff
= models.BooleanField('staff status',
default=False)
is_active
= models.BooleanField('active',
default=True)
USERNAME_FIELD
= 'username'
REQUIRED_FIELDS
= ['email']
objects
= MyUserManager()
class
Meta:
db_table
= 'myuser'
def
get_full_name(self):
return
self.username
def
get_short_name(self):
return
self.username
这里的MyUserManager和django的UserManager大同小异,也可以直接继承UserManager,然后修改_create_user函数即可。
MyUser类即为我们自定义的User模型,我们可以根据需要添加各种属性。
修改settings.py
修改settings.py文件,添加如下内容设置认证使用的model:
AUTH_USER_MODEL
= 'myapp.MyUser'
更新数据库
首先删掉之前的数据库,然后重新建立,运行如下命令生成新的数据表:
$
python manage.py makemigrations myapp
$
python manage.py migrate
经过这三步,默认的User模型已经被替换成了我们自己定义的User模型了。当然我们也可以定义自己的认证模型以及权限系统,后面涉及到相关部分再添加笔记了。
如果要使用django管理后台可以参考以下方法:
https://blog.csdn.net/watsy/article/details/15506351
django mysql数据库使用自己的User的更多相关文章
- django mysql 数据库配置
在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
- Django MySQL数据库操作
上一篇文章写了一些基本的Django操作,下面重点介绍数据库的内容. 对象之间的关系: 一对一 一对多 多对多 1.一对多 先演示一对多的关系,多个blog对应一个名字, 修改blog/models. ...
- Django Mysql数据库-基于双下划线的跨表查询
一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...
- Django Mysql数据库-F查询和Q查询
一.F查询和Q查询 F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的 ...
- Django Mysql数据库-聚合查询与分组查询
一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,C ...
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python——django使用mysql数据库(一)
之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...
- django中mysql数据库设置错误解决方法
刚在django中settings.py进行设置mysql数据库. 当进行执行python manage.py shell命令时会报以下错误: 只需要在settings.py中 DATABASES = ...
随机推荐
- 网站建设部署与发布--笔记3-部署Nginx
部署Nginx 操作系统CentOS 7.2 1.安装epel库 $ yum install epel-release -y 2.安装nginx $ yum -y install nginx 3.启动 ...
- 4、原生jdbc链接数据库常用资源名
原生jdbc链接数据库要素:#MySql:String url="jdbc:mysql://localhost:3306/数据库名";String name="root& ...
- upper_bound
头文件: #include<algorithm> 作用: 查找第一个大于给定数的元素或位置 在从小到大的排序数组中, 1.容器 (1).返回元素 #include<cstdio> ...
- 对称与非对称加密;SSL;HTTPS;AJP
1.对称加密就是加密与解密的时候都是用一个密码 2.非对称加密,有一对密码A,B:用A加密就得用B解密,相对的用B加密就得用A解密 3.公钥与私钥,这一对密码,随便拿一个公布出去,那个就是公钥,剩下一 ...
- JPA和分布式事务简介
1. Transaction 分两种,Local Transaction 和 Global Transaction. 涉及到一个Connection的Commit,称为Local Transactio ...
- Android 读取后台数据并显示。模拟小区车辆管理系统
帮别人做的演示系统,只具有基本的增删查改功能. 核心是android端和后台通过http传输数据 后台是asp.net,数据库是ms sql 2008 android端 private void ge ...
- 撒花!中文翻译仓库链接已加入 ML.NET 官方示例网站首页
从2018年12月02日决定开始做ML.NET 示例中文版https://github.com/feiyun0112/machinelearning-samples.zh-cn,然后以每天一篇的速度进 ...
- Python 学习 第十篇:正则表达式 - re
规则表达式(Regular Expression, RE),又称作正则表达式,通常用于检索.替换符合指定规则的文本,正则表达式定义的规则,称作模式(Pattern),即正则表达式的作用是从文本中查找到 ...
- Linux Namespace : UTS
UTS namespace 用来隔离系统的 hostname 以及 NIS domain name.UTS 据称是 UNIX Time-sharing System 的缩写. hostname 与 N ...
- [C#]实现任何数据库类型的DbHelper帮助类
本文章为原创内容,如需转载,请注明作者及出处,谢谢! 一.在System.Data.Common命名空间下,存在这样的一个类: // // 摘要: // 表示一组方法,这些方法用于创建提供程序对数据源 ...