Django组件之auth
一、什么是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的更多相关文章
- django 认证模块auth,表单组件form
django认证系统(auth): 1.首先我们在新窗口中打开一个django项目,之后点击,
- Django组件(四) Django之Auth模块
Auth模块概述 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能 ...
- Django认证系统auth认证
使用Django认证系统auth认证 auth认证系统可以处理范围非常广泛的任务,且具有一套细致的密码和权限实现.对于需要与默认配置不同需求的项目,Django支持扩展和自定义认证;会将用户信息写入到 ...
- python 全栈开发,Day78(Django组件-forms组件)
一.Django组件-forms组件 forms组件 django中的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显 ...
- python 全栈开发,Day76(Django组件-cookie,session)
昨日内容回顾 1 json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() ...
- Django组件(五) Django之ContentType组件
基础使用 -contenttype组件 -django提供的一个快速连表操作的组件,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中. 当我们的项目做数据迁移后,会 ...
- Django组件补充(缓存,信号,序列化)
Django组件补充(缓存,信号,序列化) Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑 ...
- Django组件 - cookie、session、用户认证组件
一.cookie 1.会话跟踪技术 1)什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话 ...
- django中的auth模块以及分页器
1.auth模块 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证,和权限管理 auth可以和admin模块配合使用, 快速建立网站的管理系统 在INSTALLED_APPS中添 ...
随机推荐
- 有效的minidump(二)
函数MiniDumpCallback 如果要自定义MINIDUMP类型标志无法访问的MINIDUMP的内容,可以使用MiniDumpCallback函数.这是一个用户定义的回调,当MiniDumpWr ...
- 【loj2263】【CTSC2017】游戏
题目 小\(R\)和小\(B\)一共完了\(n\)局游戏,第一局小\(R\)获胜的概率为\(p_i\),没有平局,对于第$ i $局游戏: 如果第\(i-1\)局游戏小$ R \(获胜,那么第 局游戏 ...
- 57、Spark Streaming: window滑动窗口以及热点搜索词滑动统计案例
一.window滑动窗口 1.概述 Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据, 会被聚合起来执行计算操作 ...
- shell脚本编程之变量的小用法
变量赋值 ${parameter:-word}:如果parameter为空或未定义,则变量展开为"word":否则,展开为parameter的值: ${parameter:+wor ...
- 算法:贪心、回溯(su)、分治、动态规划,思想简要
贪心算法: 只做出当前看来最好的选择,而不从整体考虑最优,他所作出的是局部最优解.使用该算法的前提是必须具备无后效性,即某个状态以前的选择不会影响以后的状态的选择,只与当前状态有关. 回溯算法: 本质 ...
- mysql 获取单个科目的平均分
mysql> select * from test; +----+----------+-------+-----------+ | id | name | score | subject | ...
- Tkinter 之使用PAGE工具开发GUI界面
一.安装 1.官网下载 PAGE http://page.sourceforge.net/ Tcl(8.6+) https://www.activestate.com/activetcl/downlo ...
- element ui分页器的使用
<el-pagination layout="total, prev, pager, next, jumper" :current-page="pageInfo.p ...
- IDEA中执行maven命令:mvn clean 时报错
问题描述: 完成项目中的功能后,想要git一下,就用maven命令先清除一下编译文件,紧接着系统报错 Error executing Maven. 2 problems were encountere ...
- 剑指offer:数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数. 思路分析: 1. 直观思路是直接遍历一遍,统计.复杂度也只要O(n). 2. 显然这道题要考察的内容不这么简单,实际上考虑二分的思想来完成.分别二分查 ...