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中添 ...
随机推荐
- 【洛谷P2664】 树上游戏 点分治
code: #include <bits/stdc++.h> #define N 200009 #define ll long long #define setIO(s) freopen( ...
- Cogs 739. [网络流24题] 运输问题(费用流)
[网络流24题] 运输问题 ★★ 输入文件:tran.in 输出文件:tran.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: «编程任务: 对于给定的m 个仓库和n 个零售 ...
- 干货 | 10分钟带你掌握branch and price(分支定价)算法超详细原理解析
00 前言 相信大家对branch and price的神秘之处也非常好奇了.今天我们一起来揭秘该算法原理过程.不过,在此之前,请大家确保自己的branch and bound和column gene ...
- vue-cli 中的 eslint 规则说明
"no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...
- 解决'python -m pip install --upgrade pip' 报错问题
再安装包的时候提示 You are using pip version 9.0.3, however version 10.0.1 is available.You should consider u ...
- [转]eclipse中 properties文件编码问题
原文地址:https://blog.csdn.net/uestcong/article/details/6635123 1. Eclipse修改设置项目中用到了配置文件,所以在Eclipse中新建.p ...
- notepadd++中,如何根据某个字符将一行内容切割成多行?
背景描述: 今天在做个事情,遇到下面字符,就想将每个词,如cluster,zookeeper都单独的一行 [cluster, activemq, controller, brokers, zookee ...
- TeslaManage 运行日志
“TeslaManage.exe”(Win32): 已加载“F:\TeslaManageProject\TeslaManage\x64\Debug\TeslaManage.exe”.已加载符号.“Te ...
- Nginx 配置 HTTPS SSL 代理
配置文件如下: #user nobody; worker_processes 1; events { worker_connections 1024; } http { include mime.ty ...
- RSA 签名、验证、加密、解密帮助类
import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyFactor ...