一、什么是Auth模块

  Auth模块是Django自带的用户认证模块,默认使用 auth_user 表来存储用户数据。

二、使用方法

1.创建超级用户

  python3 manage.py createsuperuser

  输入用户名,邮箱(可以不输入),密码,确认密码(成功创建超级用户,并在auth_user表中插入一条数据,因为密码必须加密所有不能手动插入)

2.验证用户

from django.contrib import auth
# 相当于在查询:user=models.User.objects.filter(name=name,pwd=pwd).first()
user = auth.authenticate(request, username=name, password=pwd) # 如果校验通过,会返回一个user对象,通过判断user对象,校验是否验证

3.登录

auth.login(request,user)
# 其实就是在session中写了一条数据

  一旦登录成功,调了这个函数login(request,user),以后再视图类,函数中的request对象中,就有一个user对象,就是当前登录的用户对象;如果没有登录,request.user=AnonymousUser是匿名用户。

4.注销

auth.logout(request)
# 内部:调用了request.session.flush(),删除了登录状态

5.登录认证装饰器

from django.contrib.auth.decorators import login_required
@login_required(redirect_field_name='awsl',login_url='/login/') # 可以局部配置# # redirect_field_name:修改?后面的key值,
# login_url:如果没有登录,跳转到的页面 # 可以全局配置(在setting中)
# 全局的配置,如果没有登录,跳到这个路由
LOGIN_URL='/login/'

7.创建用户

from django.contrib.auth.models import User
# 创建超级用户和普通用户
# 不能用create,创建的密码没加密
# user=User.objects.create(username=name,password=pwd)
# 创建超级用户
user=User.objects.create_superuser(username=name,password=pwd)
# 创建普通用户
user=User.objects.create_user(username=name,password=pwd)

8.校验密码

# 先拿到用户(可以是登录用户,可以现查)
request.user.check_password(pwd)

9.修改密码

user.set_password(pwd)
user.save() # 一定要调用save(),否则是不保存的

10.检验验证

  is_authenticated(),如果通过验证,是true反之false

11.其他方法

  is_active:禁止登录网站(用户还存在,封号)
  is_staff:是否对网站有管理权限(能不能登录admin)

12.删除用户

  orm删除

三、扩展默认的auth_user表

方法一:一对一和auth_user表做关联

from django.contrib.auth.models import User
class UserDetail(models.Model):
phone=models.CharField(max_length=32)
# 一对一跟auth_user表做关联
# 如果是从外部引入的表模型,是不能加引号的
# 如果加引号,只是在当前model找
user=models.OneToOneField(to=User)

方法二:继承AbstractUser

from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
# username,password之前auth_user表里的字段都有
phone=models.CharField(max_length=32)
sex=models.BooleanField()
# 在setting中配置,做数据库迁移,以后就没有auth_user这张表,认证组件用的就是UserInfo表
AUTH_USER_MODEL ='app01.UserInfo'

Django组件之auth的更多相关文章

  1. django 认证模块auth,表单组件form

    django认证系统(auth): 1.首先我们在新窗口中打开一个django项目,之后点击,

  2. Django组件(四) Django之Auth模块

    Auth模块概述 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能 ...

  3. Django认证系统auth认证

    使用Django认证系统auth认证 auth认证系统可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现.对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证;会将用户信息写入到 ...

  4. python 全栈开发,Day78(Django组件-forms组件)

    一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...

  5. python 全栈开发,Day76(Django组件-cookie,session)

    昨日内容回顾 1 json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() ...

  6. Django组件(五) Django之ContentType组件

    基础使用 -contenttype组件 -django提供的一个快速连表操作的组件,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中. 当我们的项目做数据迁移后,会 ...

  7. Django组件补充(缓存,信号,序列化)

    Django组件补充(缓存,信号,序列化) Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑 ...

  8. Django组件 - cookie、session、用户认证组件

    一.cookie 1.会话跟踪技术 1)什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话 ...

  9. django中的auth模块以及分页器

    1.auth模块 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证,和权限管理 auth可以和admin模块配合使用, 快速建立网站的管理系统 在INSTALLED_APPS中添 ...

随机推荐

  1. Redis存储Hash

    结构: 1.存取操作: (1)单个存取: (2)一次存储多个,单个取出: 一次取出多个·: (3)取出全部的键和值: 2.删除: (1)删除单个键值对: (2)删除所有键值对: 3.增加数值: 4.减 ...

  2. Tomcat启动服务报错:Unknown version string [4.0]. Default version will be used.

    Tomcat.jdk.web.xml 对应关系: 版本对应错误,更换便可.(版本往下兼容) web.xml——version2.2——JDK1.1——Tomcat3.3 web.xml——versio ...

  3. canvas的基本使用

    一.定义 canvas最早是由Apple引入Webkit的,<canvas>元素包含于HTML5中 HTML5的canvas元素使用JavaScript在网页上绘制图像,画布是一个矩形区域 ...

  4. kafka-python 1.4.6 版本触发的一个 rebalance 问题

    在使用了最新版的 kafka-python 1.4.6 在 broker 对 topic 进行默认配置的情况下报出类似错误 CommitFailedError CommitFailedError: C ...

  5. vue Uncaught SyntaxError: Unexpected token < 报错

    这个问题是因为项目中出现没有闭合的标签,如<img src="">  需改成<img src="xxx.png"/>

  6. avalon用background-image不起作用,怎么来选取前几个的图片进行渲染

    <span ms-css="{backgroundImage: 'url('+item.image + ')'}" ms-for="($index,item) in ...

  7. MySQL索引和SQL调优手册

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree ...

  8. Tcl数学运算

    expr 数学表达式 Tcl支持的数学操作符(优先级按照从高到低): -一元负号 +一元正号 ~按位取反 !逻辑非 *乘 /除 %取余 +加号 -减号 <<左移位 >>右移位 ...

  9. SSL 安全协议 以及 如何认证

    目录 ssl安全协议 以及 认证 什么是协议 http劫持 ssl是什么 ssl 证书 概念 3种类型ssl 证书 ssl认证:阿里云免费认证 配置 Nginx的ssl认证 nginx的ssl证书(一 ...

  10. 【软工实践】Beta冲刺(5/5)

    链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 将数据分析以可视化形式展示出来 新增数据分析展示等功能API 服务器后端部署, ...