django的功能非常强大,但是自带的user表很多情况下并不满足我们的需求,因此我们需要修改其默认的user表,并且把用username登录改成用email登录

第一步,创建自己的user表,在创建的app下的models中

from django.contrib.auth.models import AbstractUser
from django.db import models
# Create your models here. class UserProfile(AbstractUser):
nick_name = models.CharField(max_length=, verbose_name='昵称', default='')
birthday = models.DateField(null=True, blank=True, verbose_name='生日')
gender = models.CharField(max_length=, choices=(('male', '男'), ('female', '女')), default='female', verbose_name='性别')
address = models.CharField(max_length=, default='', verbose_name='地址')
mobile = models.CharField(max_length=, null=True, blank=True, verbose_name='手机号')
image = models.ImageField(max_length=, upload_to='image/%Y/%m', default='image?default.png', verbose_name='头像')
  class Meta:
  verbose_name = '用户信息'
  verbose_name_plural = verbose_name
  def __str__(self):
  return self.username

因为django的user表也是继承自AbstractUser,所以我们也这样做

然后修改下setting,添加

# UserProfile 覆盖了 django 内置的 user 表
AUTH_USER_MODEL = 'users.UserProfile'

appname.userProfile

接着修改认证系统


from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
from models import UserProfile
# 让用户可以用邮箱登录
# setting 里要有对应的配置
class CustomBackend(ModelBackend):
def authenticate(self, username=None, password=None, **kwargs):
try:
user = UserProfile.objects.get(Q(username = username) | Q(email=username))
if user.check_password(password):
return user
except Exception as e:
return None

记得引入models中创建的表

# AUTH 方法(支持邮箱登录)
AUTHENTICATION_BACKENDS = ('users.views.CustomBackend',)

setting中加入该方法

完成

django 修改默认的user表和默认的认证系统的更多相关文章

  1. Django框架详细介绍---认证系统

    在web开发中通常设计网站的登录认证.注册等功能,Django恰好内置了功能完善的用户认证系统 1.auth模块 from django.contrib import auth 模块源码 import ...

  2. django认证系统 Authentication

    Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. Django的认证系统包含了身份验证和权限管理两部分.简单地说,身份验证用于核实某个用户是否合法,权限管理 ...

  3. MySQL修改表的默认字符集和修改表字段的默认字符集

    修改表的默认字符集: ALTER TABLE table_name DEFAULT CHARACTER SET character_name; 修改表字段的默认字符集: ALTER TABLE tab ...

  4. 修改Delphi工具控件的默认字体

    修改Delphi工具控件的默认字体: 注册表: Delphi 6:    HKEY_CURRENT_USER\Software\Borland\Delphi\6.0Delphi 7:    HKEY_ ...

  5. 修改radio、checkbox、select默认样式的方法

    样式 radio select checkbox 兼容性 现在前端页面效果日益丰富,默认的input组件样式显然已经不能满足需求.趁着这次开发的页面中有这方面的需求,在这里整理一下修改radio.ch ...

  6. mysql 表名默认 windows不区分大小写 在linux区分大小写

    MySQL在Linux下数据库名.表名.列名.别名大小写规则:  1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格 ...

  7. Unity 3D 如何修改新建脚本中的 C# 默认创建的 Script 脚本格式

    首先在Unity的安装路径下找到 Unity5\Editor\Data\Resources\ScriptTemplates路径的(81-C# Script-NewBehaviourScript.cs. ...

  8. SQL Server 删除表的默认值约束

    首先查出字段的默认值约束名称,然后根据默认值约束名称删除默认值约束 ) select @constraintName = b.name from syscolumns a,sysobjects b w ...

  9. 修改chrome的安装目录(默认的竟然安装在documents and settings目录,google真不厚道)

    修改chrome的安装目录(默认的竟然安装在documents and settings目录,google真不厚道) 把chrome从系统目录提取出来 Vista下,Win+R运行 C:/Users/ ...

随机推荐

  1. [洛谷P2613]【模板】有理数取余

    题目大意:给你$a,b(a,b\leqslant10^{10001})$,求出$\dfrac a b\equiv1\pmod{19260817}$,无解输出 Angry! 题解:在读入的时候取模,若$ ...

  2. 《c程序设计语言》读书笔记-5.3-指针实现strcat

    #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> ...

  3. hashCode()方法和equals方法的重要性。

    在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...

  4. 总结各种width,height,top,left

    1.offsetWidth 内容+内边距(padding)+边框(border) 2.offsetHeight 内容+内边距(padding)+边框(border) 3.offsetLeft 获取对象 ...

  5. POJ1018 Communication System

      Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26738   Accepted: 9546 Description We ...

  6. ClientScript.RegisterClientScriptBlock 不执行

    ClientScript.RegisterClientScriptBlock 不执行 页面中 form标签必须加入 runat=server

  7. nessus plugins 离线更新

    1.打开 https://plugins.nessus.org/v2/offline.php 2.申请Activation Code http://www.tenable.com/products/n ...

  8. BeeFramework 系列

    http://ilikeido.iteye.com/category/281079 BeeFramework 系列三 MVC篇上 博客分类: Beeframework iphone开发 mvc框架Be ...

  9. nginx 根据url访问次数限制

    #获取日期 date=`date +"%y%m%d"` #设置日志路径 data="/data/logs/abc.com/access.log" #配置文件路径 ...

  10. gitlab 搭建与迁移

    #下载gitlabhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-10.1.3-ce.0.el6.x86_64.rpm ...