Django框架中auth模块的详解
auth模块
auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等
auth方法
- 导入
from django.contrib import auth
1、authenticate()
提供了用户认证,验证用户名以及密码是否正确,如果信息有效会返回一个user对象
user =authenticate(username='',password='')
2、login(HttpRequest,user)
接受一个HttpRequest对象,以及一个认证了User对象,此函数使用django的session框架给某个已认证的用户附加上session,id等信息
from django.contrib.auth import authenticate,login
def my_view(request):
username=request.POST['username']
password=request.POST['password']
user=authenticate(username=username,password=password)
if user is not None:
login(request,user)
else:
pass
3、logout(request)注销用户
接受一个HttpRequest对象,无返回值,调用该函数时,当前请求的session信息会全部清除
from django.contrib.auth import logout
def logout_view(request):
logout(request)
4、user对象的is_authenticated()
用户登录后才能访问某些页面
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
pass
def my_view(request):
if not user.is_authenticated():
pass
user对象
属性:username,password,其中password用哈希算法保存到数据库
is_staff:用户是否拥有网站的管理权限
is_active:是否允许用户登录,设置为‘False’,可以不用删除用户来禁止用户登录
1、create_user创建用户
from django.contrib.auth.models import User
user=User.object.create_user(username='',password='',email='')
2、check_password(password)校验旧密码
user=User.objects.get(username='')
if user.check_password(password):
pass
3、set_password()修改密码
user=User.objects.get(username='')
user.set_password(password='')
user.save
继承auth方法
1、导入一个AbstractUser类,并且写一个自定义类,继承AbstractUser
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
pass
2、在setting.py文件里配置
AUTH_USER_MODEL=''
Django框架中auth模块的详解的更多相关文章
- Django model 中的 class Meta 详解
Django model 中的 class Meta 详解 通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(mode ...
- Django框架 之 ORM查询操作详解
Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...
- Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)
|--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...
- Laravel框架中的make方法详解
为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...
- Foundation框架中的NSNumber对象详解
到目前为止,我们所讨论过的所有数字数据类型,如int型.float型和long型都是Objective-C语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...
- Django model中的class Meta详解
通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model): bar = models.CharFi ...
- Django model中的 class Meta 详解
通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model): bar = models.CharFi ...
- Python中标准模块importlib详解
1 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定 ...
- python中 datetime模块的详解(转载)
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...
随机推荐
- PAT (Basic Level) Practice (中文)1056 组合数的和 (15 分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85 ...
- Cloud插件,链接oracle数据库
业务场景:客户需要在Cloud中获取第三方系统的数据,但是第三方系统的数据库是oracle,这是就需要连接oracle数据库获取数据了. 需要引用Oracle.ManagedDataAccess.dl ...
- OCM 12c | OCM 12c Update | OCM 11g (Retiring Dec 31, 2019) | OCM 11g考试延期至2020.04.30
OCM 全球考试安排时间表 View A Worldwide OCM Schedule Oracle Database 12c Certified Master Exam (OCM) OCM 12c ...
- java学习笔记之集合—ArrayList源码解析
1.ArrayList简介 ArrayList是一个数组队列,与java中的数组的容量固定不同,它可以动态的实现容量的增涨.所以ArrayList也叫动态数组.当我们知道有多少个数据元素的时候,我们用 ...
- 修改video样式代码
/*video::-webkit-media-controls-fullscreen-button {display: none; //更改是否显示全屏按钮}*//*video::-webkit-me ...
- ansi sql 语法 切换为 oracle 语法
语句粘贴到 工作表 打开查询构建器 勾选 创建oracle连接 over sql dev 的语法设置调整,否则表别名会右对齐 下面是 转换后的结果,是不是看得舒服多了
- Yeoman+Bower+gulp web前端自动化工作流程(初级教程)
Yeoman包括了三个部分yo(脚手架工具).grunt/gulp(构建工具).bower(包管理器).听说gulp更容易上手,所以我就没用grunt而选的gulp 什么是开发流程? 在我看来一个完整 ...
- Java中基本数据类型byte的溢出问题
Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...
- 论文阅读笔记(四)【TIP2017】:Video-Based Pedestrian Re-Identification by Adaptive Spatio-Temporal Appearance Model
Introduction (1)背景知识: ① 人脸识别是具有高可靠性的生物识别技术,但在低解析度(resolution)和姿态变化下效果很差. ② 步态(gait)是全身行为的生物识别特征,大部分步 ...
- spark 为什么要用broadcast[转]
为什么要用broadcast? 21down vote If you have huge array that is accessed from Spark Closures, for example ...